制御構文(4) foreach

for を勉強した後にマニュアルを眺めていたら foreach を見つけました。といっても、実は foreach と for は同じ意味らしいですが。
foreach を使うと、配列の要素に1つずつアクセスできます。
foreach $スカラ変数 (@配列) { ブロック } と書く事で、@配列の要素が1つずつ $スカラ変数 に代入されて、その都度ブロックが実行されます。つまり、要素数の回数分ブロックが繰り返されるわけですね。
また、要素を受け取る $スカラ変数 を省略すると、魔法のスカラ変数 $_ が使われるとの事。

for(my $i = 0; $i < @arr; $i++) { print "$arr[$i]\n" }

foreach $elem (@arr) { print "$elem\n" }

foreach (@arr) { print "$_\n" }

はどれも同じ意味になるわけですか。さすがPerl、何通りも書き方があります。
怠惰になるとすれば、一番短い書き方(foreach (@arr))を選ぶべきですが、この書き方は読みづらくないでしょうか。
でも、省略すると $_ が使われる、というのはPerlに慣れれば気にならないのかもしれませんね。