出沢です

ソートされたデータの(先頭カラムの)値に応じた名前のファイルに
データを振り分けて書き出す。

という仕事をしようとしてますが、うまくいきません。

こんな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 になってしまっています。

なぜでしょう、、、