headerを出力してからのdie
CGIの中でHTTPのheaderを出力してしまってからのDIEというのはなるべく避けているけど、やってしまったときに、CGI::Carpがどのように処理をしているのかがなかなか面白かったのでメモ。
my $bytes_written = eval{tell STDOUT}; if (defined $bytes_written && $bytes_written > 0) { print STDOUT $mess; } else { print STDOUT "Content-type: text/html?n?n"; print STDOUT $mess; }
標準出力のファイルポジションをチェックするなんてことができるのね。
CGI::Carpはプログラムを作成するときは便利ですが、本運用時は使わないようにしましょう。
エラーが出た場合のメッセージがセキュリティ上問題になる可能性もあります。