週末には少しPerlを。

Perlスクリプトの学習日記です。

パターンにマッチした以降の行のみを出力するワンライナー

perl -ne '$f =1 if /pattern/; print if $f;' sample.txt

Zabbix::APIを使ってzabbixに登録されているホストを知る

統合監視ツールzabbixにはWebUI以外にJSON-RPCによるAPIが用意されておりまして、 このAPIを叩くためのcpanモジュールZabbix::APIを使う練習をしてみます。 Loginする use Zabbix::API; my $zbx = Zabbix::API->new( server => 'http://example.com/zabbix/a…

Date::Calcを使って今月の日数を知る

今月は何日間あるか、日数を知りたい。 そんな時にはDate::Calcに丁度よいモノが。 use Date::Calc qw(:all); my ($year, $month, $day) = Today(); my $days = Days_in_Month($year, $month); print "$year - $month - $day\n $days days in this month.\n";…

MovableType 6 を入れてみようかと思ったらGPL版がなくなっていた

もう一カ月以上前の話に 今頃きがつきましたとさ。 参考リンク Movable Type 6 の新しいライセンスについて

IPv4アドレスのような何かにマッチする正規表現

量指定子(quantifier)の復習 0回以上の繰り返しは「*」、1回以上の繰り返しは「+」、n回以上m回以下の繰り返しは「{n,m}」と書きます。 1~3ケタの数字は「¥d{1,3}」と書くとよろしい。 IPv4アドレスのような何か とりあえず以下のように…

CGI::Application::Plugin::DBHを使ってデータベースのテーブル内容を表示してみる

データベースに接続する 前回に引き続きCGI::Applicationの練習をいたします。 データベースにアクセスするための機能がPlug-inにありまして、これを使います。 cgiapp_init の中でDBに接続するコードを書きます。 use base 'CGI::Application'; use CGI::Ap…

CGI::Applicationを練習するための最小に近いコードを書いてみる

CGI::Applicatioin もっと他のフレームワークが今の流行なのかもしれませんが、 温故知新という言葉もあります。 CGI::Applicationを使って文字通りCGIアプリを作るお勉強をしようと思い立ったのです。 最小構成に近い形ということで、テキストボックスに文…

CGI::Sessionを使うとセッション情報はどのようにファイルに格納されるかを観察する

CGI::Sessionを使った簡単なCGIプログラムを書いてみる 入力フォーム hogesess.cgi に入力した内容を fugasess.cgi で表示することにして、 同時にその内容をセッション情報に格納します。 次回、直接に fugasess.cgi にアクセスしても同じ内容を表示したい…

CGIプログラムでcookieに大きなサイズの情報を詰め込む実験をしてみる

HTTP cookieとは Wikipedia によると RFC 6265などで定義されたHTTPにおけるウェブサーバとウェブブラウザ間で状態を管理する プロトコル、またそこで用いられるウェブブラウザに保存された情報のこと おそらく日常で無意識的に使っているモノのだと思うので…

mod_rewriteで出来るApache2のURLリダイレクトを敢えてmod_perl2で行う

元ネタ YAPC::Asia Tokyo 2012 の発表資料 「モダンmod_perl入門」 を最近読みまして、その中で紹介されていた内容を実際に試した備忘録をここに記します。 mod_rewirte mod_rewirteはリダイレクトを実現するApacheの拡張モジュールで、以下の公式ドキュメン…

Perlモジュールのバージョンを確認するイロイロな方法

元ネタ Google先生に尋ねたところ2010年のadvent calendarで モジュールのバージョンを確認するときどうやってますか? にイロイロ紹介されていましたので、いくつか自分で試してみました。 VERSION変数をprintする $ perl -MDBI -le 'print $DBI::VERSION' …

ワンライナーで足し算したり時刻表示したりする

端折っていますが Famous Perl One-Liners の読書メモの3回めです。 足し算する perl -MList::Util=sum -alne 'print sum @F' List::Utilはコアモジュールなのでインストールの心配無用。 「-Mmodule=arg」は次と等価。 use module qw(arg) -aスイッチの「a…

エスキモーの挨拶を知り、初めてPerlの秘密の演算子に触れる

ワンライナーでよく登場する奇妙なコードの書き方は「secret operator」と呼ばれニックネームがつけられて いるようです。 参考: CPANのperlsecret 実際には演算子でもなんでもない、そんな奇妙な書き方に困惑しつつ Famous Perl One-Liners の読書メモの2…

一行野郎(ワンライナー)でテキストファイルの行間に空行を入れたり削ったりする

元ネタ ワンライナーでいろいろな事ができるようになるとカッコイイだろうなと 思いつつ手頃な教科書を探していたのですが、 "Perl One-Liners Explained" という記事が英文ですが読みやすかったので、 ここに第一章の覚書メモを残すものです。 行間に空行を…

いかにしてメイドさん画像をダウンロードするか~NAVERまとめ編

動機 NAVERまとめを「メイド」検索すると約100のまとめがヒットします。 もちろんすべてが画像サイトというわけではありませんが ここに少なからぬ宝が埋蔵されているわけで、これを発掘したいと思ったわけです。 全体の構成 アプローチですが、DBに「巡…

Log::Log4perlのEasy ModeでプロセスのPIDもログに出力する

お手軽なログ出力 自分のスクリプトにデバッグ目的でたくさんのprint文を入れるのが常なのですが、 最近はLog::Log4perlを使うことを覚えました。 Easy Mode というものが簡便に使えて、たとえば use Log::Log4perl qw( :easy ); Log::Log4perl->easy_init( …

設定ファイルから読み込んだパラメータ内容をGetopt::Lucidを使ってコマンドラインオプションで上書きする

設定ファイルとコマンドラインオプションの優先順位の問題 スクリプトの中のパラメータの一部をコマンドライン引数で指定した設定ファイルから読み込むようにしたい、 さらにその内の任意の項目をコマンドラインオプション指定で上書きできるようにしたいと…

いかにしてメイドさん画像をダウンロードするか~FC2編

Webサイトを巡回して画像ファイルを得る Googleなどで「メイド 画像」を検索しているとfc2.comドメインのWebページが 少なからずヒットします。 そこでこれらのWebページを巡回してメイドさん画像をダウンロードする スクリプトを書いてみました。おおまかに…

Webページから一定の大きさ以上のJPEG画像ファイルをダウンロードする

ビッグデータの時代に 情報が氾濫するこの時代に真に意味のある情報とは何でしょうか。 価値観は人それぞれでしょうが、さしあたりここでは「150キロバイト以上のサイズのJPGイメージファイル」こそ 有意な情報であるという前提とします。 目標 対象とするWe…

MySQLデータベースにINSERT文で行を挿入しようとしたときの一意キー制約によるエラーを無視する

一意キー制約 MySQLデータベースを使っていて、列が1つだけの表にどんどんレコードを追加していきたい、 ただし重複したデータは登録したくないとします。 テーブル作成時に該当の列に一意キー制約をかけておくと mysql> create table tbl_sometest (url va…

いかにしてメイドさん画像をダウンロードするか~2013

元ネタ ゆーすけべーさんの有名なブログエントリ 「いかにしておっぱい画像をダウンロードするか~2012」 をほとんどそのまま利用して「おっぱい」を「メイド」に置き換えれば 大量のメイドさん画像を得ることができます。 この元ネタはゆーすけべーさんの以…

CentOS 6.3にMovable Type 5.2.3をインストールして女子との出会いの確率を上げる

Movable Typeの世界は女子率が高いとの話 を先日のKansai.pm 第15回ミーティングにて聞きましたので 将来あるかも知れないMT女子との合コンの機会に備えて インストールくらいしておこうと思ったわけです。 ダウンロード 公式サイトから個人無償版をダウンロ…

Net::OpenSSH 0.60 のタイムアウト時の動作を眺める

Net::OpenSSH Kansai.pm 第15回ミーティングでの @shiba_yu36 さんの Cinnamon の紹介を聞いて、Cinnamonの中で使われているという Net::OpenSSH に興味を持ちました。 リモートのサーバーにSSH接続してコマンドを実行するための モジュールですが、気になる…

Kansai.pm 第15回ミーティングに参加しての感想など

Kansai.pm 第15回ミーティングに話を聞きに行ってきました。 こういう勉強会への参加は初めてでしたが興味深い話が聞けて 楽しく過ごせました。 「ブログに書くまでがKansai.pm」とのことなので、以下感想とメモを 記します。 『Webサービスのつくり方』のつ…

ブログ開設にあたって

趣味としてのPerlプログラミングのことなどを書いていきます。