local変数について改めて理解する
Perlにはglobal変数、local変数、my変数があります。
私はあんまりlocal変数って使う機会が無くて、なんとなくしか理解していませんでした。
my変数が「ブロック内がスコープの変数」というのに対して、local変数は「ブロック内で呼んでる関数なんかスコープになる変数」と覚えていました。
実は、上司と話している時にlocal変数はどんな変数か聞かれました。私は上記のように答えると、「結果としてはあっている。けれど、どうしてそうなるかを説明できる?」と言われ答えられませんでした。
基本を理解していない自分が恥ずかしかったので、戒めのために記します。
local変数は「ブロック内を実行している間だけglobal変数を書き換える変数です。」
だからブロック内で呼んだ関数もスコープになる(みえる)んですね。