標準入出力のオープン
 
POSTメソッドではブラウザから送られる情報を標準入力(STDIN)から読み(GET メソッドの場合は環境変数QUERY_STRINGから)、結果を標準出力(STDOUT)にデータストリームとして出力しブラウザに送り返します。Perl の場合 STDIN、STDOUT は、ファイルハンドルとしてあらかじめ用意されているので、オープンする必要はありません。print 文での出力ではファイルハンドル STDOUT は省略可能となっています。デフォルトのファイルハンドルを変更するには select() を使います。

また、出力には標準エラー出力(STDERR)もあります。サーバにもよりますが、STDERR に出力したものは、サーバのログファイルに書き込まれることが多いようです。
 
stdio.cgi
#!/usr/bin/perl
#
# use_cgi_lite_pm.cgi
#
# (C)1999 Kaoru Fujita
#

# サーバのエラーログファイルに出力
print STDERR "This may be put into the error log.\n";

# STDERR を保存
open(SVSTDERR, ">&STDERR"); 

# STDERR を STDOUT に複製
open(STDERR, ">&STDOUT");
select(STDERR); $| = 1; 

print "Content-Type: text/plain\n\n"; 

# サーバのエラーログファイルに書きつつ標準出力にも出力
print STDERR "Error !!"; 

# STDOUT に複製した STDERR をクローズ
close(STDERR);

# STDERR を元に戻す
open(STDERR, ">&SVSTDERR");

# サーバのエラーログファイルに出力。元に戻った?
print STDERR "This may be put into the error log. (2nd)\n";

exit(0);

#--End of stdio.cgi

[サンプルプログラムの実行]

<注> STDIN、STDOUT、STDERR は大文字です。