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


Copyright(C) 2006-2011 CLAYPOT. All Rights Reserved.