GitHub - kyanny/regexp-log-combined-perl: Regexp: :Combined
Regexp::Log::Combined というモジュールを作りました。
Regexp::Log のサブクラスで、 Regexp::Log::Common のクローンです。 Regexp::Log::Common を使っていて不便だと思っていたところを少し手直ししました。具体的には、 request を単一の文字列ではなく、 $method $resource $proto という三つのパートに分けてマッチさせたかったので、そこのところを追加しました。
あと、 Extended Common Log Format っていう呼称は一般的なのかもしれないけど、 Apache 標準の httpd.conf には combined と書いてあって extended とは書いてないので、 Common より Combined とモジュール名にあったほうが探しやすいと思い、リネームしています。
主に、正規表現を手で書きたくないのでライブラリ化したかったのと、自分の勉強のために作ったものなので、 CPAN にアップロードはしないつもりです。 Regexp::Log::Common の作者には、変更点を取り込んでもらえないかどうか、メールをするかもしれません。
Regexp::Log のサブクラスの作り方はこれでだいたい理解できました。といっても、次にサブクラスを作りたくなることなんてあるのだろうか・・・。
あと、普段モジュールを作り慣れてないせいか今まで気づかなかったのですが、自分の環境では module-starter で作った雛形が ExtUtils::MakeMaker と Module::Build を使うようになっていて、 Module::Install を使っていませんでした。どこかからコピペしてきた .module-starter/config をそのまま使っていたせいで、やや時代遅れのパッケージングとなっていたようです。前から、 Makefile.PL と Build.PL が両方あるのは面倒くさいな、と思っていたので、この機会にパッケージングまわりの勉強をしなおしたいと思います。