Go to the first, previous, next, last section, table of contents.

local

`local(LIST)'
リストアップした変数を、 括弧で囲まれた ブロック・サブルーチン・evaldo にローカルであると宣言する。リスト中の全要素は左辺値でなければならない。 localLIST 中の変数の値をスタックに保存し、 ブロック・サブルーチン・eval から抜ける時に元に戻す。 このため、呼ばれたサブルーチンではローカル変数は参照できるが、 グローバルな変数は参照できないことになる。 LIST は希望により値を代入することができる。 これによりローカル変数を初期化できる。 (ある変数について初期化を指示しない場合、値はundefined で作成される。) 通常、サブルーチンへのパラメータに名前を付けるのに用いる。
sub RANGEVAL {
     local($min, $max, $thunk) = @_;
     local($result) = ";
     local($i);

     # $thunk は $i を参照すると仮定している

     for ($i = $min; $i < $max; $i++) {
          $result .= eval $thunk;
     }

     $result;
}

if ($sw eq '-v') {
    # グローバルな配列でローカルな配列を初期化
    local(@ARGV) = @ARGV;
    unshift(@ARGV,'echo');
    system @ARGV;
}
# @ARGV は保存される

# 連想配列に一時的に数字を付加する
if ($base12) {
     # (注意: これが効率がよいわけではない!)
     local(%digits) = (%digits,'t',10,'e',11);
     do parse_num();
}
注意:
local() は run-time コマンドであり、ループでは毎回実行される。 このためループから抜けて解放するまで、毎回スタックを消費する。

Go to the first, previous, next, last section, table of contents.