なひです.週末は1.3系のsignalと戯れているうちに終わってしまいました. > From: Yukihiro Matsumoto [mailto:matz / ev.netlab.co.jp] > Sent: Monday, March 29, 1999 12:15 AM > |ついでにヒアドキュメント中の行末がCRLFだと > |どちらもchompで削られて(LFだけ削って欲しい...) > |データが壊れちゃうこと(CSVのレコード区切りをCRLFに設定している), > |を発見して,ああどこを直せばいいのかしら,なんて再び探していて... > > 1.3系ではヒアドキュメントに限らずスクリプトの行末はLFに正規 > 化してます.まずかったかしら? 新仕様のままでいいと思います. なひのCSVパーザ http://www.jin.gr.jp/~nahi/Ruby/ruby.shtml#CSV のサンプルでは, myStr =<<'EOM' foo,"""foo""","foo,bar","""""",,^M, ,"^M "^M EOM こんなことして,解析元データを与えてます(^Mは実際は0x0d,CRです). 1.2系では問題なかったのですが, 1.3系で問題になるのは2行目末尾のCRで,これがCRLF→LFと正規化され, 次にchompされ,最後にLFが追加され, ヒアドキュメントとしてmyStrに追加されます. これはCSV的には"CRLF"というデータなのですが, "LF"になってしまいます. ただこれは,今回のような改行sensitiveなデータを放り込むのに ヒアドキュメントを使うのが悪いのであって, 「注意してね」ということでいいと思います. スクリプト全体が「行末=CRLF」で書かれていた時, ヒアドキュメントの中だけ特別扱いするのは変ですし.^^;