[編集] - 後知恵の恩恵により、この質問は誤った方向に向けられました。Perl::Criticによるeval の誤った使用と正しい批評の良い例であるため、削除していません。
Perl Critic は、以下のコードに対して次のような批判を提起しています。
テストされていない eval の戻り値。の値に依存して
$@/$EVAL_ERROR
、評価が失敗したかどうかを判断することはできません
my $Jet = Win32::OLE->CreateObject('DAO.DBEngine.36')
or croak "Can't create Jet database engine.";
my $DB = $Jet->OpenDatabase($DBFile)
# code omitted for the sake of brevity
# perl script writes results to Access db via an append query
$DB->Execute( $SQLquery, 128 ); #128=DBFailOnError
eval {$err = Win32::OLE->LastError()} ; #<<<< PROBLEM LINE SEE FEEDBACK BELOW
if ( $err){
print $ERROR "WIN32::OLE raised an exception: $err\n";
Win32::OLE->LastError(0); # this clears your error
}
私の考えではeval
、エラーオブジェクトの存在を検出し、Win32:OLE
モジュールでエラーを検出して報告するために使用しています。
批判を無視しても安全ですか?