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()などの@_に対する配列操作が無効である,などの制限がある。