酒匂です。 ofp が nil になる件に関しては、皆さんのご指摘通りだと思います。 で、ちょっと話は横道に逸れますが、もともとのプログラムの書き方を 工夫すれば、そもそも ofp や ofile などの変数を使わずに済ませることもできます。 At 15:15 06/05/23, しん wrote: >$cat files.rb >alist = ["Jan","Jan","Jan","Feb","Mar","Apr","May","Dec"] > >ofile="" >alist.each{|file| > if ofile != file > ofile != "" && ofp.close > ofile = file > ofp = open(ofile,"w") > end > ofp.printf "%s\n",file >} >ofp.close これを open のブロックを使って、以下のように書くこともできますね。 alist = ["Jan","Jan","Jan","Feb","Mar","Apr","May","Dec"] alist.uniq.each {|file| File.open(file, "w") {|f| f.printf("%s\n",file) } } 重複を取り除く部分が uniq で互換になるのかという問題もありますけどね。 まあこれはもともとの仕様しだい。 イテレータは ruby を使う場合の醍醐味の一つでもあります。