エラー処理

eval

evalではブロック内部でコードを実行するため、構文エラーや実行エラーが発生した場合にそれを捕捉できます。たとえば、

my $a = 1/0; # Illegal division by zero として処理が終了

のように実行エラーが発生すると処理が終了しますが、

eval {
    my $a = 1/0;
};

のようにevalを用いると処理を継続できます。このときエラーメッセージが$@に格納されるため、それでエラー内容を確認できます。

eval {
    my $a = 1/0;
};
print $@; # Illegal division by zero と出力

一方でエラーがない場合には$@は空文字列となるため、それを調べればエラーに応じた処理をできます。

eval {
    # エラーを発生するかも知れない処理
};
if( $@ ) {
    # エラーが発生した場合の処理
}

die

例外を発生させられます。

die LIST
die - perldoc.perl.org
die 'ERROR';
die;

引数に文字列を指定した場合は、その文字列が標準エラー出力 (STDERR) に送られます。指定しない場合は$@の値が用いられますが、それが空文字列ならば"Died"が代わりに送られます。

autodie

autodie - perldoc.perl.org
Perlの情報サイトから、まとめて検索