1

次のコードを理解しようとしています。

sub foo {
    ...
    if ( $@ ) {
        ...
        die $@;
    }
}
4

3 に答える 3

13

perldoc -f eval:

構文エラーや実行時エラーが発生した場合、または「die」ステートメントが実行された場合、「eval」によって未定義の値が返され、エラー メッセージに $@ が設定されます。エラーがなければ、$@ は null 文字列であることが保証されます。

も参照してくださいperldoc perlvar

于 2009-07-30T17:53:30.950 に答える
3

$@evalもしあれば、最後のコマンドのエラーメッセージを含むマジック変数です。

于 2009-07-30T17:55:33.723 に答える
0

$@ をトラップできるようにするには、if ループの前に eval を付ける必要があります。

eval() の間、$@ は常に失敗時に設定され、成功時にクリアされます。

eval() 内の whr コードがコンパイルされなかった場合、$@ はコンパイル エラーに設定されます。

于 2011-03-07T14:54:00.457 に答える