From: ogino@... Date: 2000-03-07T11:43:26+09:00 Subject: [ruby-list:21235] 二重引用符中の #{} 中の CR+LF → LF の置換 荻野です。たびたびお騒がせします。そろそろ引っ込もうと思っていますので 勘弁してください。 Win32 上で二重引用符中の #{} 内で囲まれた部分で CR+LF -> LF への変換が 行われるようですが、これは仕様でしょうか? 単なる二重引用符中の "\r\n" は変換されないのでちょっと仕様とは考えにくいのですが。 仕様だとするとこれは止めようがないような気がするのですが、これも正しい でしょうか? ruby 1.4.3 (1999-12-08) [i386-cygwin] Windows2000Pro + cygwin1-20000211.dll # ひょっとして FAQ だとすごく恥ずかしいですが... Cygwin の bash のコマンドラインからの実行結果です。 $ruby -e 'a="\r\n"; p a.gsub(/\r/, "[CR]")' "[CR]\n" $ruby -e 'a="\r\n"; p a.gsub(/\r\n/, "[CR]")' "[CR]" $ruby -e 'a="\r\n"; p a.gsub(/\r\r\n/, "[CR]")' "\r\n" ここまでが当然の結果なのですが、ダブルクォーテーションマークと #{ } で 囲うと以下の通りに違ってきます。 $ruby -e 'a="\r\n"; p "#{a.gsub(/\r/, \"[CR]\")}"' "[CR]\n" $ruby -e 'a="\r\n"; p "#{a.gsub(/\r\n/, \"[CR]\")}"' "\r[CR]" $ruby -e 'a="\r\n"; p "#{a.gsub(/\r\r\n/, \"[CR]\")}"' "[CR]" これで [ruby-list:20771] CGI の改行 (Ruby + Apache on Windows) の(私に は)わけがわからなかった結果も理由がわかりました。here document 中です から、上記と同じ結果になるわけです。 以上、よろしくお願いいたします。 -- 荻野 充 (おぎの みつる) ... 「萩(はぎ)」にあらず 名古屋大学消費生活協同組合