nDiki

2013年3月5日 (火)

Perl で "+{" は見かけるし使うけど、"{;" は見かけないし使ったことない

Perl で "{" はブロックの始まりと、無名ハッシュへのリファレンスであることの始まりが曖昧な文脈があって、後者であることを示すために "+{" という書き方がある。

このことが話題になったので、あらためて perlref を読んでみたら "{;" という書き方を発見。こちらはブロックであることを明示する時に使う。

以下 Perl 5.14.2 の prelref より抜粋。結果も 5.14.2 で確認。

 sub hashem {        { @_ } }   # silently wrong
 sub hashem {       +{ @_ } }   # ok
 sub hashem { return { @_ } }   # ok

上からリスト、 ハッシュリファレンス、ハッシュリファレンスを返す。

 sub showem {        { @_ } }   # ambiguous (currently ok, but may change)
 sub showem {       {; @_ } }   # ok
 sub showem { { return @_ } }   # ok

全てリストを返す。

[ 3月5日全て ]

About

Process Time: 0.180072s / load averages: 0.52, 0.92, 0.80