復習 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.