map を使おう
仕事メモ。map の使い方で初心者っぽいハマり方をしたので。
my @aaa = qw( key1 key2 key3 );
こんな感じの配列から、「key」を除いて、(1, 2, 3)みたいなリストが欲しいとします。
で、
my @aaa = qw( key1 key2 key3 ); @aaa = map { s/^key// } @aaa; #これじゃダメ print "(" . join (", ", @aaa) . ")\n";
こんな感じのを作ってみると...
tsucchi@over[11]% perl a.pl (1, 1, 1)
あれ???なんでやねん???
と、小一時間悩んだ。(いや、悩んだのは10分くらいかも)
正解は、
@aaa = map { s/^key//; $_ } @aaa;
$_ を評価するのがポイントだよね。置換演算子の戻り値は置換した回数が返る。なので最初のやり方では駄目だったわけです。
で、これを実行すると、
tsucchi@over[13]% perl a.pl (1, 2, 3)
と無事に変更できましたとさ。