なひです。

こんなエラーが出ます。

$ cat foo.rb && ruby -v foo.rb
require 'benchmark'

Benchmark.bmbm do |x|
  f = File.open("out", "w")
  x.report do
    f << "abc"
  end
  f.close
end

ruby 1.8.1 (2003-11-11) [i686-linux]
Rehearsal ------------------------------------
 foo.rb:6:in `write': closed stream (IOError)
        from foo.rb:6:in `<<'
        from foo.rb:6
        from foo.rb:5:in `measure'
        from /usr/local/lib/ruby/1.8/benchmark.rb:296:in `bmbm'
        from /usr/local/lib/ruby/1.8/benchmark.rb:294:in `each'
        from /usr/local/lib/ruby/1.8/benchmark.rb:294:in `bmbm'
        from foo.rb:3

* f.closeをなくすと期待通り動きます。
* x.reportの中でなければ(f << "abc"を外に出すと)以下同様。

本当はbenchmarkの中まで分解して、最小セットを作るべきですね。
すいません。