すいません、自己解決しました!
for($i=0;$i<=$#all-1;$i++ ) を
for $i (0..$#all-1) にしたらうまくできました。

しかしこの二つの文は僕には同じようにしか見えないんですがどこが違うんでしょうか。。。