In article <1072197138.772607.16885.nullmailer / picachu.netlab.jp>,
  matz / ruby-lang.org (Yukihiro Matsumoto) writes:

> ARGFは端末からの入力で複数回 ^D を送った場合以外は該当しない
> と思うので、今回は変更なしでよいと思います。Zlib::GzipReader
> は私の方で手直ししておきましょうか。

複数回 ^D ではなく複数回 read でも関係あります。

% ruby -e 'p ARGF.read; p ARGF.read' < /dev/null
""
nil

みたいに、全部読んで EOF flag が立った後に read したときに nil じゃな
くて "" を返すという意図なので。もしかして IO#read を変えると自動的に
変わる?

まぁ、ARGF の EOF flag とはなんだろうかというのも微妙な所ですけど。上
記のように "" と nil の違いを生んでいる内部データが EOF flag に対応し
ているわけですが。

それはそれとして、ARGF のあたりを眺めていたら

% ruby -e 'p ARGF.read; p STDIN.read' - < /dev/null
""
-e:1:in `read': closed stream (IOError)
        from -e:1

という挙動を見つけました。STDIN が close されるのは変じゃないでしょう
か。
-- 
[田中 哲][たなか あきら][Tanaka Akira]