>>767
昔はforeach(1..1000000)は内部的に
@array=(1..1000000);
foreach (@array)
って風に一回配列を作ってからforeachにかけてたんじゃないかな。
だからまず@arrayを作るのに時間がかかって、@arrayを評価するのにも時間がかかって…みたいな。

ちなみに
use Benchmark;
@array = 1..100000;
timethese(1000,{
'array'=> q{ foreach (@array) { $_ } },
'0..10'=> q{ foreach (1..100000) { $_ } },
});

Benchmark: timing 1000 iterations of 0..10,array...
0..10: 131 wallclock secs (131.49 usr + 0.00 sys = 131.49 CPU) @ 7.61/s (n=1000)
array: 152 wallclock secs (152.09 usr + 0.00 sys = 152.09 CPU) @ 6.58/s (n=1000)

うちだとこんな結果が出た。Win98 perl5.6.1 CPU466MHz