perl local と my

#合計を調べる

#初期値
$sum = 10;

#サブルーチン1を呼び出し
&sum1();

print "合計: $sum\n";

#サブルーチン1
sub sum1{
    $sum++;
    {
        local($sum);
        $sum++;
        &sum2();
    }
    &sum3();
}

#サブルーチン2
sub sum2{
    $sum++;
}

#サブルーチン3
sub sum3{
    my($sum);
    $sum++;
}


#localとmyで定義した変数はどちらもサブルーチンを抜けた時点で無効になるので最初の$sum++だけが意味を持つ

初めてのPerl 第6版

初めてのPerl 第6版