配列の要素数だけを同じ文字で置き換える方法
タイトルそのまま。
たまたま perldoc perlop していたら、初めて見たようなことが書いてあったのでメモ。
例えば1〜10まで入っている配列の中身を全部「S」に入れなおす。
my @one_ten = 1 .. 10;
foreach
foreach my $int (@one_ten) { $int = 'S'; }
後方修飾だとこう。
$_ = 'S' for @one_ten;
map
@one_ten = map 'S', @one_ten;
x(repetition operator)
でさっき見つけたやり方。(perlopより)
@one_ten = ('S') x @one_ten;
ポイントなのが x の左辺を()で囲ってリストコンテキストにするところ。
スカラーコンテキストだと、連続した文字列が一個の要素として左辺に返る。
@one_ten = 'S' x @one_ten; $" = q{ }; print "@one_ten\n"; #=> SSSSSSSSSS # ↑これが$one_ten[0]
あれ、心なしかmapの方が簡単に見える気がする…。
まあやり方はいろいろある。いえー。