■2005-11-16
* [Perl][メモ] CGI::Carpのステータス
CGI::CarpのfatalsToBrowserがステータスに500を返さないというお話。なるほど…… あくまでもCGI::CarpのfatalsToBrowserに拘る場合の強引な解決方法を思案。
use CGI::Carp qw(fatalsToBrowser set_message); BEGIN { no warnings 'redefine'; my $org_fatalsToBrowser = \&CGI::Carp::fatalsToBrowser; *CGI::Carp::fatalsToBrowser = sub { require CGI; local $ENV{MOD_PERL} = 1; print CGI->new->header(-status => 500); &$org_fatalsToBrowser(@_); }; sub handle_errors { my ($msg) = @_; print <<END; <h1>Software error:</h1> <pre>$msg</pre> END } set_message(\&handle_errors); }
通常、運用時にfatalsToBrowserを素で使うことはないでしょうから冗談ということで。