まつもと ゆきひろです

In message "[ruby-list:6873] Re: http_get.rb"
    on 98/03/02, 藤本尚邦 / FUJIMOTO Hisakuni <hisa / imasy.or.jp> writes:

|藤本です、こんにちは。
|
|#メール量が多すぎてスレッドの流れについて行けてないのですが (^^;

すんません.

|  Mac版では普通は (binmode以外では)
|
|    \n   0x0D、つまりMacOSでのテキスト改行文字
|    \r   0x0A、つまりUNIXでのテキスト改行文字
|
|として扱われています(みたいです)。これはMac版で使ってるライブラリ
|(GUSI+MSL)がそのように振る舞うからで、あえてMac版rubyをそうしたという
|わけではありません。おそらくCのソース互換性のためそう振る舞うのだと思
|います。それに応じてデフォルトの$/は"\n"のままにしてます。

げげげ.で

|#だけど、これだと"\r\n"が0x0A0Dになってしまいますね、うーん (^^;

こうなるわけですね.うーん,MacPerlとかもそうなんだろうか….

このような仕様は日常的には使いやすそうですけど,時々問題
が起きそうですね.UNIX版で動いているスクリプトがMacでは動か
なかったりするような….まあ,妥協できるレベルなのかも知れま
せんが.

|  僕の感想としては、javaを例に出すと、java.lang.system.getProperties()
|で得られるシステムプロパティのfile.separator、path.separator、
|line.separatorに相当するようなものがrubyにあって、テキスト改行文字、
|TCP/IPで使われる改行文字などを表すときにはそれを使うようにするのがいい
|なぁと思います。

それだとグローバルに変わっちゃうんで望ましくないんではないか
なあ,と思ってます.binmodeのような個別のIO毎に切替えられる
べき性質のような気がします.となると本当に移植性のある \r\n 
のようなものが欲しければ,

  print "foo bar\x0a\x0d"

のような表現の方が良いんでしょうかね.

|> また、binmode はあるのでしょうか?
|
|  binmodeって f = File.open("filename", "rb")のbのことですよね。
|                                          ^

そうだ,というか,そうでない,というか.

ここでのbinmodeというのはIO#binmodeというメソッドのことで,
テキストモードでオープンされたFILEをバイナリモードに設定し直
すものです.
                                まつもと ゆきひろ /:|)