北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

perlのへぇへぇへぇ(1)

Error.pmっていうモジュールのソースを読んでて気がついたこと。関数のリファレンスに引数を渡すのに、



my $f = sub {return shift};
print $f->("Hello\n");




なんて書けるの知らなかった(--;。



後、wantarray。よく、真か偽のどちらかを返すと書かれているけど、実は違った。正確には、1か''かundefのどれか。例えば一行に関数だけを裸で書いた場合は、コンテキストが不明となり、undefが返る。



sub wt_test { print (defined wantarray ? wantarray() . "\n" : "undef") }
@t = wt_test;
$t = wt_test;
wt_test;

結果
1

undef