ハンドルの解放はGCに頼れない、の巻

rubyでごにょごにょスクリプトを書いていたのですが、とあるファイル読み込み時に、なぜか途中で読み込みが途切れるという意味不明の現象が発生しました。そのファイルを単体で読み込むコードを実行したら正しく読めるのです。
ふと、その読み込み処理の前の部分を見たら、

    f = File.open()
    ....

という処理をしているところがあって、しかもこのfに対して解放処理をしていませんでした。しかもこのコードが何十回も実行されるのです。ファイルハンドルの開きすぎです。ここを

    File.open( _outfile, "w" ){|f|
        ....
    }

にしたら、不思議な現象は収まりました。あちゃー。
本日の教訓

持ちまわさないハンドルならブロック形式を使いなさい