CGI::Carp

CGI エラーメッセージハンドラ

use CGI::Carp;
warn, carp, cluck, die, croak, confessメッセージをWebサーバのエラーログに記録する。
CGI環境におけるCarpの代替モジュールとして機能する。
warn:警告表示
carp:呼び出し元の観点からの警告表示
cluck:スタックトレース付き警告表示
die:エラー表示
croak:呼び出し元の観点からのエラー表示
confess:スタックトレース付きエラー表示

use CGI::Carp qw(fatalsToBrowser);
上記+fatal エラーメッセージや、die, croak, confessメッセージをブラウザに表示する。

use CGI::Carp qw(fatalsToBrowser set_message);
上記+ブラウザに表示するメッセージをカスタマイズする。
カスタマイズハンドラは、下記の様に記述する。

BEGIN {
    sub handle_error {
    	my $msg = shift;
        [[ ここで$msgを加工する ]]
        print "<p>$msg</p>\\n";
    }
    set_message(\&handle_error);
 }

BEGINブロックは、読み込まれた直後にコンパイルされ実行される。この為、このBEGINブロック以降に発生するコンパイルエラーもhandle_error関数に渡される。
$msgはHTMLエスケープされた文字列(perlが出力したエラーメッセージ)が入力される。ブラウザには、type='text/html'で出力されるので、加工後の出力もHTMLエースケープが必要。

その他、エラーメッセージをhttpdのerror_logではなく、プライベートログファイルに出力させる事もできる。
ほとんど使わないと思われるので省略。