Perl変数宣言 myとlocalの違い
2024年1月17日
Last Updated on 2024年1月17日 by Dotmatrix
Perl変数宣言 myとlocalの違い
my:ブロック内でのみ有効
local:ブロック内で呼び出されたサブルーチン内でも有効
何もつかなければグローバル変数
グローバル変数
$a=1;
$b=2;
$c=3;
&kansu;
sub kansu{
my $a=aaa;
print $a; #答えaaaと表示される
local $a=bbb;
print $a; #bbbと表示される
&kansu001;
#localの場合は呼び出された関数&kansu001にまで及んでbbbと表示されるがmyの場合はブロック内だけだから関数&kansu001にまで及ばない
}
sub kansu001{
print $a; #答えbbbと表示される
}
print $a; #1と表示される
ここは関数の外なのでmyが及ばない、localも及ばないしたがって一番外のグローバル変数が適用される