読者です 読者をやめる 読者になる 読者になる

my変数とリファレンス

List::Util.pmを見てたらこんなコードを見つけた。

  my $caller = caller;
  local(*{$caller."::a"}) = \my $a;
  local(*{$caller."::b"}) = \my $b;

\myって何だ?と思ったらこれひょっとして$aと$bにバックスラッシュが付いてるって意味か?

  my ($a, $b);
  local(*{$caller."::a"}) = \$a;
  local(*{$caller."::b"}) = \$b;

つーかマニュアルのどこ見たらこんな書き方載ってるんだろう。

あとこれ、呼び元のシンボルテーブルにこっちの$aと$bの参照を渡してて、要するにsort { $a <=> $b } @ary;とか書いた時にいきなり$aと$bが使える理由はこういうことだったのか。