TOP - Perl - 関数 - my

変数を局所化します。
localとは違い、以前の値に対する操作は無く、同じ名前の変数を見えなくするだけです。
従って、宣言を行った変数がグローバル変数と同じ名前だった場合でも全く関係なく存在することとなります。

my 変数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();

    my $s_test = "aaa";

    print "sub_test内で宣言後の\$s_test = " . $s_test . "\n";

    &sub_sub_test_2();
}

sub sub_sub_test_1
{
    print "my宣言前の呼び出しサブルーチン内の\$s_test = " . $s_test . "\n";
}

sub sub_sub_test_2
{
    print "my宣言後の呼び出しサブルーチン内の\$s_test = " . $s_test . "\n";
}
実行結果
グローバルな$s_test = test
my宣言前の呼び出しサブルーチン内の$s_test = test
sub_test内で宣言後の$s_test = aaa
my宣言後の呼び出しサブルーチン内の$s_test = test
サブルーチンを抜けた後の$s_test = test


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