日記

Perl変数宣言 myとlocalの違い

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も及ばないしたがって一番外のグローバル変数が適用される