はじめまして、丹野@筑波大です。

これまでは perl 一辺倒だったのですが、ruby 本が出たのを期にと
ruby でちょこちょこ遊んでいます。

いきなり質問で恐縮なのですが、Cygwin 版 ruby (version 1.4.3) の 
File#read の挙動で悩んでいます。

以下のようなスクリプトを FreeBSD 上で走らせると

% cat test.rb
f = File::open($0)
p f.stat.size
p f.read.size
f.close

f = File::open('somefile.bin')
p f.stat.size
p f.read.size
f.close

% ruby --version
ruby 1.4.0 (1999-08-13) [i386-freebsd3.3]       ( <- ちと古いですが )

% ruby test.rb
132
132
395063
395063

と、望んでいた結果が得られるのですが、これを Cygwin 版の ruby で実行すると、

>ruby.exe --version
ruby 1.4.3 (1999-12-08) [i386-cygwin]

>ruby.exe test.rb
132
123
395063
2064

と、read で読みだされるバイト数が実際のものよりも少なくなってしまいます。
Cygwin 版の ruby で File#read を用いて全てのデータを読み出すには、なにか
特別な指定などが必要なのでしょうか?

#FAQ でしたらすみません。Webのチェックと過去メールの検索はやって
#みたのですが、探し方が甘いと言われたら申し訳ないです。

--- Hajime Tanno / Computer Networks Lab., Univ. of Tsukuba