07/03/26 20:24:15
>>158
そりゃ今時書いたコードじゃないからだろ
162:nobodyさん
07/04/06 03:04:34
my と local をきちんと説明できる人間ってどのくらい居るんだろうな。
163:nobodyさん
07/04/06 05:22:41
初心者レベルだからlocalはぶっちゃけ自信ない。
よく特殊な使われ方するし。
164:nobodyさん
07/04/06 22:13:55
my(=局所変数)スコープ内でのみ利用できてスコープを抜けた所(リファレンスがなくなったところ?)で破棄される。
local(=退避変数)宣言があった所で値を退避させてスコープを抜けた所でもとに戻す。
って感じで説明するかなぁ
以下のコード実行結果予想して、実際に実行してあってれば理解できるんじゃないかな
use strict;
use warnings;
my $a = 1;
local $b = 1;
my $c = undef;
if(1){
my $a = 'a'; local $b = 'a';
$c = sub {
printf "%d:a=%s,b=%s\n",1,$a++,$b++;
};
printf "%d:a=%s,b=%s\n",2,$a++,$b++;
}
printf "%d:a=%s,b=%s\n",3,$a++,$b++;
$c->();
printf "%d:a=%s,b=%s\n",4,$a++,$b++;
局所化できない変数($_等)除くと、よっぽど特別な理由がなきゃmyでいいじゃんって思う