松永です。 差出人 :しんさん タイトル:[ruby-list:42253] File objectがいつのまにか nilに、 |出沢です | |ソートされたデータの(先頭カラムの)値に応じた名前のファイルに |データを振り分けて書き出す。 | |という仕事をしようとしてますが、うまくいきません。 | |こんなscriptを通します。 |期待は、Jan というファイルに Jan が3行、Feb というファイルに Febが1行 |出ることなのですが、1行書いたところでエラーとなります。 | |$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 | |$ruby files.rb |files.rb:6: undefined local variable or method `ofp' for main:Object |(NameError) | from files.rb:4:in `each' | from files.rb:4 | |Jan というファイルに Jan と 1行書かれておわり。 |ofp が nil になってしまっています。 | |なぜでしょう、、、 ofpが宣言したブロックの外側で使われているから.. でしょうかね。 ofpを一番外側で宣言するといいと思います。 ofile=""のすぐあとに ofp=nil とか。 -- ------------------------------------------------ 松永肇一(keiichi matsunaga) 株式会社ライフメディア 開発部 RSSでがんばってみよう → http://www.imi.ne.jp/fortune/imi_uranai.html