タグ

Perlとスコープに関するneedingyouのブックマーク (2)

  • can は coderef を返す - Perlにまつわる小ネタ集 - モダンなPerl入門

    ->can は coderef をかえす クラスにメソッドがはえているかどうかを確認するためには、 Foo->can('bar') という風に、can メソッドをつかいます。can メソッドの return value は、boolean だと おもわれがちですが、実際にはちがいます。->can の return value は Foo->bar メソッドの coderef です。 よって、 Foo->can('bar')->('baz'); は Foo::bar('baz') と同じ意味になります。 応用編 local と can をくみあわせると、スコープの中でだけ豚を飛ばす、などといった芸当が可能になります。 my $pig = Pig->new; { local *Pig::fly = Bird->can('fly'); $pig->fly; # $pig can fly now

  • [Perl] my と local と our の違いについて - 竹迫の近況報告

    404 Blog Not Found:perl - myとourとscopeと みんな難しく考えすぎです。 (例外については後で考えることにして)とりあえず以下の基をおさえておけば混乱することはないと思います。 ■ our 宣言について our はグローバル変数をスマートに使用するための宣言です。our は use vars と等価と考えてください。 our $var; は use vars qw($var); と等価。 our $var = 1; は use vars qw($var); $var = 1; と同じ動きをするもの、と覚えておけばOKです。それ以上の違いは基的にないと考えて構いません。 ひとつ実用上の違いがあるとすれば、our は Perl 5.6 以降の built-in なのに対して、use vars は vars.pmPerlスクリプトで実装されています。し

    [Perl] my と local と our の違いについて - 竹迫の近況報告
  • 1