下記コードを書いた場合
$strは、ブラケットの終わりまで…
つまり、ここではif文を抜けるまでが範囲となる。
よって、if文の後に$strを書くとuse strictに
グローバル変数$strを使ってるぞ!
と、こっぴどく叱られることになる。
use strict;
use warnings;
if(1){
my $str = "ok";
}
print "$str\n"; #strictプラグマにこっぴどく叱られる
でも、同じif文でもif修飾子になるとブロックを
排除するのでスコープの範囲が変わる。
use strict;
use warnings;
my $str = "ok" if(1);
print "$str\n"; #okと表示される。
0 件のコメント:
コメントを投稿