macro.pm v0.03
macro.pmはv0.03になってわりとうまく動くようになった(と思う)。
ためしにHTML::FillInForm::Liteでいくつかの関数をマクロ化してベンチマークをとったところ,約20%ほど高速になった。それなりに効果はあるようだ。
ちなみに,マクロの書き方はサブルーチンの仕様のサブセット*1になっている,以下のようにサブルーチンをマクロ化することができる。
#!perl -w use feature 'say'; sub foo{ $_[0] =~ /(foo)/ ? $1 : $_[0]; } use macro foo => \&foo; say foo("foo"); # マクロ化されたfoo()の呼び出し say qq{${\foo("bar")}}; # サブルーチン版のfoo()の呼び出し
*1:return()できない,shift()などの@_に対する配列操作が無効である,などの制限がある。