foreach my $i (@array){}
の形式って、実際にはどうなってるの?
配列としては展開されてない?
1個ずつ発生して不要なのは切り捨てられてるの?

foreach my $i (0 .. 99999999){}
for(my $i = 1; $i <= 99999999; $i++){}
後者のほうが5秒ほど遅くなるんだけど。