Perlでループ処理実行時のメモリ不足について

Perlでループ処理実行時のメモリ不足について

大きなサイズのファイルを1行目から順番に読んでいく処理をするプログラムが、途中で強制終了
原因はデータの読み込みにwhileじゃなくてforeachを使っていたから

Perlベストプラクティスにも書いてあった

最悪なのは、forループのスケーラビリティが充分ではないことだ。
...(略)...
このことは、入力がある程度の大きさに達すると、メモリ割り当てのエラー(Out of memory!)によって入力ループが終了したり、あるいは過剰な
メモリ割り当てやスワッピングのオーバーヘッドによって、少なくとも、処理速度が話にならないほど低下するおそれがあることを意味する。

これに対し、同等のwhileループは、データを1行ずつ読み取ながら処理する。

foreach my $line(<FILE>){
}

じゃなくて

while(my $line = <FILE>){
}

みたいに書きなさいよってこと