2010年3月14日日曜日

Perlのforeachで・・・

先日ちょっとPerlを書く機会があって、その時に次のようなコードを書いてみた。
#!/usr/bin/perl
use strict;
use warnings;

# コピー元の配列作成
my @a = ("One", "Two", "Three", "123");
# コピー先の配列
my @b = ();

foreach my $val (@a) {
 push @b, $val;
 $val = "Change";
}
print @b, "\n";
print @a, "\n";

これ実行結果は、
OneTwoThree123
ChangeChangeChangeChange
となるのですが、なんかこれちょっと不思議な感じがする。個人的に。
$valに代入してるつもりが、@aの要素にも代入されてるのが気持ち悪いのかな?
うっかり元配列まで変更しないように気をつけないといけませんね。

0 件のコメント:

コメントを投稿