Perlでの繰り返し処理

Koboldエンジンスクリプトを改良していたときに思ったのだけれど、Perlで配列に対して繰り返し処理を行うときに、forとかforeachを使う人って、多いのではないだろうか?
処理が長いときはforやforeach(*1)でよいのだが、簡単な操作なら、join, map, grepという関数を使う方がよりPerlらしいスクリプトになる。たとえば、

my $indent = "    "; # 半角スペース4つ
foreach (@myarray) {
  print $indent.$_."\n";
}

みたいに書くなら、

my $indent = "    "; # 半角スペース4つ
print join "\n", map { $indent.$_ } @myarray;

と書くほうが、Perlらしいということです。
*1 ところで、この2つ(forとforeach)は全く同じ動作だということも、知られているようで、意外と知られていなかったりするようだ。つまり、

my $indent = "    "; # 半角スペース4つ
for (@myarray) {
  print $indent.$_."\n";
}

とか、

my $indent = "    "; # 半角スペース4つ
foreach ($i = 0; $i <= $#myarray; $i++) {
  print $indent.$myarray[i]."\n";
}

とか、書けるということ。
*2 あと、一行ifの構文も意外と知られていない?

if ($myvar eq "foo") { print $myvar."\n" }

の代わりに、

print $myvar."\n" if ($myvar eq "foo");

と書けること。{,}で囲まなければ、if節は行の後ろに来るのがPerl流。