From: Tanaka Akira Date: 2003-12-24T02:05:06+09:00 Subject: [ruby-dev:22358] Re: yet another inconsistency about EOF between StringIO and IO 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]