From: Five point Five <5.5@...> Date: 2007-05-26T12:27:30+09:00 Subject: [ruby-list:43569] YAML.load_file はじめまして。Five point Five と申します。 YAML を使っていて不可解な現象に遭遇しました。 Windows 特有かもしれません。こちらの環境は > ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32] です。 まず,以下のような YAML ファイルがあるとします。 改行コードは,Windows なので CR+LF です。 — sample.yaml ———————————————————— - foo, - bar. - baz ———————————————————————————— そして以下のスクリプトを実行します。 ———————————————————————————— require 'yaml' p YAML.load_file('sample.yaml') p YAML.load(open('sample.yaml').read) ———————————————————————————— すると,以下のように,YAML.load_file の場合だけ "foo," の あとに CR がつきます。 ———————————————————————————— ["foo,\r", "bar.", "baz"] ["foo,", "bar.", "baz"] ———————————————————————————— YAML ファイルの改行コードを LF のみにして同じ実験を行うと "foo," のあとの CR は消えました。 スクリプトの3行目の場合,read した時点で CR+LF が LF に なりますが,YAML.load_file だとそのへんの処理が違うのかな あと思いました。 それにしても,行末がカンマで終わっているときとそうでない ときで CR がついたり付かなかったりというのは解せません。 -- Five point Five <5.5@moji.gr.jp>