Filter::Simpleでセイセーイ!
↓の辺とか
http://search.cpan.org/~ingy/Inline-YAML/
↓の辺で
http://search.cpan.org/~kazuho/Filter-SQL/
Filter::Simpleというモジュールが使用されていてなんだかかっちょいいのでやってみました。
http://search.cpan.org/~dconway/Filter-Simple/lib/Filter/Simple.pm
お題
sayサブルーチンをフィルターで作る!!という誰も得しないもの。
(ちなみにperlのバージョンは5.8.8で。)
もっと有用な使い方が有るとは思うんですがね・・・。
とりあえず
↓をホゲホゲいわせたい。
say "hogehoge"; say("hogehoge"); say q/hogehoge/; say "hoge". "hoge";
フィルタ作成。
package Filter::Say; use strict; use warnings; use Filter::Simple sub { code => s/say\s*(.+)\s*(:?;|\n)+/Filter::Say::say($1)/eg; }; sub say($) { my $value = shift; my $code = sprintf 'print %s; print "\n";', $value; $code =~ s/;+/;/g; # ブロックの最後以外だと二個重なっちゃうので。 return $code; } 1;
でuseさせて動かすと・・・
use strict; use warnings; use Filter::Say; say "hogehoge"; say("hogehoge"); say q/hogehoge/; say "hoge". "hoge";
出たーーーー!
hogehoge hogehoge hogehoge hogehoge
というアンニュイな夕方でしたとさ。
これで何か出来るかな。