02. 多量のファイルを扱うときのヒント
ファイルだけではなく、行数が数百万とかのとき。いままで出来ていた処理系が破綻をきたします。
どうするか?
- foreach
- よく使いますよね。で、foreach展開の元を「変数」に入れて書く方、ハマります。
- 変数サイズが許容量オーバーするときがあります。じゃあどうするの?
- foreach tmp ( `xxx` )
- を使います。一見綺麗じゃない?書き方に思う方もいるかと思いますが、直接UNIX/Linuxコマンドを呼び出すことで、変数の仕様制限から開放されます
- `ls xxx`が破綻、`grep xxx ...`が破綻
- 異常なほど大きなプロジェクトで、ある処理を自動化しようとするとき、昔おきました。
- → 対処法:当時はPerlで逃げました。Perlで system("ls xxx") とかはダメですよ。ちゃんとPerl独自の記述方法を用いましょう。別にRubyでも、awkでも。
- 問題なのは、大量にメモリー消費してしまうときに起きるので、うまく書けるなら、アイテムの数を管理して、1000個ずつとか(lsの場合)、またまた1000個ずつとか(grepでサーチかけるファイル数)で回避しましょう