Что означает специальная переменная $ @ в Perl? - PullRequest
1 голос
/ 30 июля 2009

Я пытаюсь понять следующий фрагмент кода:

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

Ответы [ 3 ]

13 голосов
/ 30 июля 2009

perldoc -f eval * * 1004

Если есть синтаксическая ошибка или время выполнения ошибка, или утверждение "умереть" выполнено, неопределенное значение возвращается "eval", и $ @ устанавливается в сообщение об ошибке. Если бы не было ошибка, $ @ гарантированно будет нулевым строка.

См. Также perldoc perlvar.

3 голосов
/ 30 июля 2009

$@ - магическая переменная, содержащая сообщение об ошибке последней команды eval, если есть.

0 голосов
/ 07 марта 2011

Циклу if должен предшествовать eval, чтобы он мог перехватывать $ @.

Во время eval () $ @ всегда устанавливается при сбое и очищается при успехе.

В случае, если код внутри eval () не скомпилирован, $ @ устанавливается на ошибку компиляции.

...