Perl再入門 | for,foreachはループ対象の配列を書き換えます。ご注意。

配列に対してforやforeachでループ処理をする際に、制御変数の中身を変更すると、元の配列の中身も変更されてしまいます。 知らないと思わぬ損をするので、気をつけましょう。 私は今まで知りませんでした。(><)
use strict;
use warnings;

my @array = ("x", "y");

for (@array){
	$_ = "z";
}

print "@array";
出力結果: z z

なお、以下のような書き方でも同じ結果になります。
for my $a (@array){
	$a = "z";
}
関連記事
Perl再入門 | 超簡単!for,foreachの使い方
カテゴリ: