From: Wakou Aoyama Date: 1999-04-10T13:52:17+09:00 Subject: [ruby-list:13574] Re: telnet.rb STDOUT 青山です。 Sat, Apr 10, 1999 at 12:31:54PM +0900 において Wakou Aoyama さん曰く: > $ ruby -e ' > STDERR.print($stdout.id,"\n") > STDERR.print(STDOUT.id, "\n") > $stdout = open("/dev/null", "w") > STDERR.print($stdout.id, "\n") > STDERR.print(STDOUT.id, "\n") > ' > 537482618 > 537482618 > 537482618 > 537482618 > > 変ですね。$stdout への代入がおかしいようです。 rb_define_hooked_variable() で $stdout が定義されているからなんでしょ うかね。$0 と異なりフックは必要ないような気も。と思ったら、タイプチェッ クを行っているんですか。 $ ruby -e '$stdout = "a"' /tmp/rba01237:1: $stdout must be IO object (TypeError) なるほど。とはいえ、 $ ruby -e ' $stdout.print "hogehoge1\n" $stdout = open("/dev/null", "w") $stdout.print "hogehoge2\n" $stdout = STDOUT $stdout.print "hogehoge3\n" ' hogehoge1 この挙動はやはりおかしいですよね。$stdout に代入が行われても $stdout.id が変化しないのが原因なのでしょうけれど。 -- 青山 和光 Wakou Aoyama