>>903
result=Array.new
block{
  …
  …
  result.push(…)
}
puts result

のよーな事前定義必須な使い方になんかよくわからないバッドノウハウ的なウザさを感じたのは確かだと思う。
いや、スコープがブロック外に届かないという仕様は極めて正しいけれど。初心者スレ的になんとなく。

>>900
openは読み書きにどうしても必要な一瞬だけ開いて閉じるというのが正しい使い方の模様。
もし、
「プログラムの5行目でとりあえずopenしてプログラムの最終行で忘れずclose」
というような使い方をして無闇にブロックが広くなった結果不便だと感じたのなら、それは直したほうがいい。
openのブロックの中にはputsやreadしか書かないくらいの意気で。