タグ

ブックマーク / nanto.asablo.jp (1)

  • Perl で関数内に関数を定義する: Days on the Moon

    この記事は Perl アドベントカレンダーの 20 日目の分です。 Perl コードを書いていて、関数内で関数を定義したいと思ったことはありませんか? 普通に sub foo { ... } の中に sub bar { ... } を書けばよいのでは思われるかもしれませんが、それだと関数が局所的にならず外部に露出してしまいます。 package MyPackage { sub foo { sub bar { 42 } return bar(); } } # foo 関数の外部からも bar 関数を呼び出せる。 say MyPackage::bar(); # => 42 無名関数のコードリファレンスを使うこともできますが、見た目がちょっと煩雑ですね。 package MyPackage { sub foo { my $bar = sub { 42 }; return $bar->(); }

  • 1