Translate

2008年7月11日金曜日

my宣言メモ

my宣言のスコープは、my宣言をしてからブラケットの終わり(})まで。
下記コードを書いた場合
$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 件のコメント: