eval
eval EXPR
eval BLOCK
EXPRないしはBLOCKを実行します。構文エラーや実行時エラーが発生した場合には未定義値を返し、$@にエラーメッセージを設定します。
EXPRを指定した場合、EXPRの結果をPerlのプログラムとして実行します。
BLOCKを指定した場合、BLOCKをPerlプログラムとして実行します。
サンプルプログラム
# evalにEXPRを指定するサンプル use strict; use warnings; my $expr = '(1 + 2) * (3 + 4)'; my $result = eval $expr; # (1 + 2) * (3 + 4) をPerlのプログラムとして実行する printf "%s = %d\n", $expr, $result; # (1 + 2) * (3 + 4) = 21
# evalにBLOCKを指定するサンプル use strict; use warnings; my $old = 'old.txt'; my $new = 'new.txt'; eval { rename $old, $new or die "rename($old, $new): $!"; }; if ($@) { # エラー時に実行する処理 print "Error!\n"; print $@; exit 1; } exit 0;