From: Wakou Aoyama Date: 1999-04-10T12:31:54+09:00 Subject: [ruby-list:13572] Re: telnet.rb STDOUT 青山です。 Sat, Apr 10, 1999 at 10:28:59AM +0900 において kikutani@sprintmail.com さん曰く: > STDOUTじゃなく、$stdoutにしとくというのはどうでしょう? > これなら使う直前で $stdout = open('/dev/null', 'w') しとけばいいし。 あ、その程度でいいなら現在も可能です。 $ ruby -e ' > STDOUT.print "hogehoge1\n" > stdout = STDOUT.dup > STDOUT.reopen(open("/dev/null", "w")) > STDOUT.print "hogehoge2\n" > STDOUT.reopen(stdout) > STDOUT.print "hogehoge3\n" > ' hogehoge1 hogehoge3 > なんて思ってテストしてみたけど > > printf $stdout, "hogehoge1\n" > $stdout = open('/dev/null', 'w') > printf $stdout, "hogehoge2\n" > $stdout = STDOUT > printf $stdout, "hogehoge3\n" > > だめじゃん、hogehoge3 が出ないよ、ホワーイ? printf の使い方が違います。というのは別として、 $ 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 への代入がおかしいようです。 -- 青山 和光 Wakou Aoyama