From: Tanaka Akira Date: 2004-01-01T01:47:21+09:00 Subject: [ruby-dev:22469] ARGF.each {|x| ARGF.eof? } and number of Ctrl-Ds. 次のプログラムは、a^D^D と入力すると終了します。この場合終了には ^D は 2つ必要になっています。最初の ^D は行バッファの flush なのでプログラム に送られた EOF は 1回です。 % ruby -e 'ARGF.each {|x| ARGF.eof? }' a<^D><^D> それに対し、次のプログラムは終了するまでに ^D がもう一つ必要です。 つまり EOF が 2回送られています。 % ruby -e 'ARGF.each {|x| }' a<^D><^D><^D> また、ARGF でなく STDIN で同様に試すと、eof? の呼び出しに関係なく ^D は後者と同様に 3つ必要になります。 % ruby -e 'STDIN.each {|x| }' a<^D><^D><^D> % ruby -e 'STDIN.each {|x| STDIN.eof? }' a<^D><^D><^D> 挙動を比較すると、ARGF.each {|x| ARGF.eof? } が他と異なるのですが、いっ たいどちらが意図された挙動なのでしょうか? -- [田中 哲][たなか あきら][Tanaka Akira]