最初に&があると、特別扱いされて、無名サブルーチンの sub を省略して「間接オブジェクト」スロットにブロックだけを置くことができる(この場合、ブロックの後ろにはコンマは置かない)。
func(@ary, sub { $_*2 } ) が func { $_*2 } @ary になる。
sub hoge ($&) {}
hoge 'foo', sub {}; #ok
sub hoge2 (&$) {}
hoge2 {} 'foo'; #ok
sub aaa (&) {}
aaa sub{} #ok
sub mymap (&@) {}
mymap {} qw( a b c d ); #ok
mymap sub{}, qw( a b c d ); #ok
mymap sub{} qw( a b c d ); #NG subが付くと、コンマが必要
Plack::Builderの例
package Plack::Builder;
sub builder (&) {
}
app.psgiの中で、
builder {
...
$app;
}
で実行できる。
0 件のコメント:
コメントを投稿