Loose-Info.com
Last Update 2008/05/18
TOP - Perl - 関数 - local

変数を局所化します。
myとは違い、宣言時点で宣言前の値を保存し、局所化範囲を抜ける時に値を元に戻す操作を行います。
従って、宣言を行った変数がグローバル変数だった場合は、宣言が有効な間、変数の値自体が変化します。

local 変数1

変数1
宣言対象の変数(リスト値も可)

(例)
$s_test = "test"; print "グローバルな\$s_test = " . $s_test . "\n"; &sub_test(); print "サブルーチンを抜けた後の\$s_test = " . $s_test . "\n"; sub sub_test { &sub_sub_test_1(); local $s_test = "aaa"; print "sub_test内で宣言後の\$s_test = " . $s_test . "\n"; &sub_sub_test_2(); } sub sub_sub_test_1 { print "local宣言前の呼び出しサブルーチン内の\$s_test = " . $s_test . "\n"; } sub sub_sub_test_2 { print "local宣言後の呼び出しサブルーチン内の\$s_test = " . $s_test . "\n"; }

実行結果
グローバルな$s_test = test local宣言前の呼び出しサブルーチン内の$s_test = test sub_test内で宣言後の$s_test = aaa local宣言後の呼び出しサブルーチン内の$s_test = aaa サブルーチンを抜けた後の$s_test = test