Perlの範囲演算子の不思議

不思議に思ってたのは俺だけかもしれませんが。


forループで大きいファイルを処理しようとすると、全行読み込んでtemporaryのリストを作るので、ファイルサイズの2倍ぐらいのメモリを食ってしまう。なのでforじゃなくてwhileのほうが良いってのは知ってました。


で、ちょくちょく気になってたのが、こんなサンプルコード。

for my $num (1..1_000_000){
  # hogehoge
}

でっけーリスト作るからダメなんじゃねーの??なんて思ってたんですが、どうやら違ったみたい。

Perlの最新バージョンでは、範囲は実行時に評価される。

Perlベストプラクティス P.229

というわけなので使っても大丈夫らしい。