Perlでmyとlocalの違い
Perlでは、変数宣言がありません。また、変数スコープはグローバル(サブルーチンを越えてプログラム全体で共有される)です。
しかし、my関数とlocal関数を使うことにより、あたかもローカル変数宣言のようにできます。
また、myとlocalでの違いは、以下の通りです。
myで宣言された変数はレキシカルスコープ(lexical scope)を持ちますが、
http://blog.mag2.com/m/log/0000015670/15143023.html
localで宣言された変数はダイナミックスコープ(dynamic scope)を持ちます。
myで宣言された変数は宣言されたブロックのみで有効です。
一方、localで宣言された変数は呼び出したサブルーチンの先でも有効です。
localのサンプル
$word = "晴れ"; &today; sub today { local $word = "雨"; &yesterday; print "今日は$wordです。\n"; } sub yesterday { print "昨日は$wordでした。\n"; } <実行結果> 昨日は雨でした。 今日は雨です。http://www.kent-web.com/perl/chap8.html
myのサンプル
$word = "晴れ"; &today; sub today { my $word = "雨"; &yesterday; print "今日は$wordです。\n"; } sub yesterday { print "昨日は$wordでした。\n"; } <実行結果> 昨日は晴れでした。 今日は雨です。http://www.kent-web.com/perl/chap8.html