ごとけんです

In message [ruby-list:5839] Re: CGI script in Ruby
	<199801090307.MAA32165 / picachu.netlab.co.jp>
 > 違いは$stdin,$stdout,$stderrは特殊変数で,これに
 > 
 >   $stderr = STDOUT
 > 
 > のように代入すると
 > 
 >   $stderr.reopen(STDOUT)
 > 
 > と同じ動作をすることです.

そういう風に変更されたのですね。知らなかったです (^^;

ちなみに僕は、申し訳ないことに青山さん拡張の cgi-lib.rb を
使ってませんので、以下の話しは最初の質問には関係ないですが
こういうことをやってるやつもいるという程度に読んで下さい。
CGI をかくときは、

#! /usr/local/bin/ruby
error_file = open("hoge_error_log", "a")
$stderr.reopen(error_file) unless $stdin.tty?

def end_html
  print "</html>\n"
  $complete = TRUE
end

begin
..
          end_html
..
ensure
  unless  $complete
    $stderr.print "異常終了\n"
    $stdout.print "<br>予期せぬエラーのため送信を中断しました!!!</html>\n">
  end
  error_file.close if error_file
end

などととしてまして、
httpd を通したときのエラーはファイル hoge_error_log に、
tty からテストするときは tty に書くようにしてます。
ruby にもし tee(1) みたいなのがあって、出力先を複製できるなら、
いいのですが、そういうことはできないようなので
人が出してくれたエラーも記録するために stderr と stdout は
分けて使っています。

tty からテストする理由は syntax エラーを拾うためです。

% setenv QUERY_STRING 'a=1&b="hehe"'
% setenv REQUEST_METHOD GET
% hoge.cgi

みたいにしてます。これは ruby 1.1 ではしなくてもよいこと
なのでしょうか? (実はいまだに 1.0)

-- gotoken