復習 3.6 foreach制御構造

foreach制御構造における制御変数は、リストの要素のコピーではなく、リストの要素そのものなんだそう。

見落とし発見。
foreach命令内の制御変数にループ中の命令が作用するように理解していたけれど、実際はリストの要素そのものに作用するんだな。よくよく考えてみれば当たり前だ。
下記のコードを実行させると良く理解できた。

my @array = qw {
1
2
3
};

my $num;
foreach $num (@array) {
    $num ++;
}
print "@array\n";
print "$num\n";

実行結果は以下となります。

2 3 4
Use of uninitialized value in print at hoge.pl line 16.