eval EXPR
eval BLOCK
eval BLOCK
引数の値をPerlのスクリプトとして解析し、実行します。変数の設定、サブルーチンなどの定義は、その後も有効です。返される値は、サブルーチン同様に、最後に評価した式の値か、return文の値です。
eval EXPR形式は、eval BLOCK形式と違い、変数の値を式として使うことができます
$expr1 = '$answer = '; $expr2 = '$a / $b'; eval "$expr1$expr2";
構文エラーや実行エラーが発生するか、die文が実行されると、evalの値として未定義値が返され、$@にエラーメッセージが設定されます。エラーがなければ、$@は、空文字列です。
evalは、致命的エラーとなるようなものをトラップすることができますから、dbmopenやsymlinkといった特定の機能が実装されているかを調べるのに効果的です。
evalの使い方
# 0 除算を致命的でなくす
eval { $answer = $a / $b; };
warn $@ if $@;