perl my とour

#ourとmyのテスト

#グローバル変数を宣言
@global_value = (1, 2, 3);

&modify_my();
print "[my後] ", @global_value, "\n";

&modify_our();
print "[our後] ", @global_value, "\n";

#myによるグローバル変数の上書き
sub modify_my{
    my(@global_value);
    print "[my] ", @global_value, "\n";
    @global_value = ("A", "B", "C");
    print "[my変更] ", @global_value, "\n";
}

#ourによるグローバル変数の上書き
sub modify_our{
    our(@global_value);
    print "[our] ", @global_value, "\n";
    @global_value = ("A", "B", "C");
    print "[our変更] ", @global_value, "\n";
}


#実行結果
# [my] 
# [my変更] ABC
# [my後] 123
# [our] 123
# [our変更] ABC
# [our後] ABC

#補足
#my演算子では変数が初期化され、ブロックから抜けると値が元の値に戻る。
#our演算子では変数の値は保持され、ブロックから抜けても値は変更後のままとなる。

初めてのPerl 第6版

初めてのPerl 第6版