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 $@;