5部 関数リファレンス

eval

eval EXPR
eval BLOCK



引数の値をPerlのスクリプトとして解析し、実行します。変数の設定、サブルーチンなどの定義は、その後も有効です。返される値は、サブルーチン同様に、最後に評価した式の値か、return文の値です。

eval EXPR形式は、eval BLOCK形式と違い、変数の値を式として使うことができます

$expr1 = '$answer = ';
$expr2 = '$a / $b';
eval "$expr1$expr2";

構文エラーや実行エラーが発生するか、die文が実行されると、evalの値として未定義値が返され、$@にエラーメッセージが設定されます。エラーがなければ、$@は、空文字列です。

evalは、致命的エラーとなるようなものをトラップすることができますから、dbmopensymlinkといった特定の機能が実装されているかを調べるのに効果的です。

evalの使い方

# 0 除算を致命的でなくす
eval { $answer = $a / $b; };
warn $@ if $@; 

関連記事