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 LISTdie - perldoc.perl.org
die 'ERROR';
die;
引数に文字列を指定した場合は、その文字列が標準エラー出力 (STDERR) に送られます。指定しない場合は$@の値が用いられますが、それが空文字列ならば"Died"が代わりに送られます。