藤本です、こんにちは。

From: matz / netlab.co.jp (Yukihiro Matsumoto)
Subject: [ruby-list:6883] Re: http_get.rb
Date: Mon, 2 Mar 1998 18:05:22 +0900

> いや,これはrubyのパーザの問題で(藤本さんが特に手をいれてな

  parse.yはほとんど手をいれてないので影響ないと思います。

> い限り),大丈夫なのは分かっているんです.気になっているのは
> MacにおけるCライブラリがどのような変換を行うかです.
> 
> たとえば
> 
>   f = open("/tmp/foo", "w") # テキストモードで変換させる
>   f.print "foo\r\n"
>   f.close
> 
>   f = open("/tmp/foo", "rb") # バイナリモードで読んでみる
>   p f.gets
> 
> の結果とかが気になるんですね.

  試してみました。

ruby> f = open("foo", "w")
#<File:0x2988638>
ruby> f.print "foo\r\n"
nil
ruby> f.close
nil

  この時点でファイルfooを直接覗くと 666F6F0A0D になってました。どうい
うことかわからないけど、\rと\nがそれぞれ逆に変換されてるのかなという感
じです。つづきは

ruby> f = open("foo", "rb")
#<File:0x29882dc>
ruby> f.gets
"foo\n"
ruby> f.gets
"\r"
ruby> f.gets
nil

となります(直接覗いたとおりの結果)。ちなみに

ruby> f = open("foo", "wb")   # バイナリモードで書き
#<File:0x2988638>
ruby> f.print "foo\r\n"
nil
ruby> f.close
nil

は

ruby> f = open("foo", "rb")   # バイナリモードで読む
#<File:0x29882dc>
ruby> f.gets
"foo\r\n"
ruby> f.gets
nil

となります。当然かもしれませんが問題なしです。"\r\n"を正しく送るために
はバイナリモードにする必要があるのかもしれません。

=============================================================
 藤本尚邦  FUJIMOTO Hisakuni                hisa / imasy.or.jp
=============================================================