■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を素で使うことはないでしょうから冗談ということで。
[]

