Что означает специальная переменная $ @ в Perl?
Вопрос
Я пытаюсь понять следующий фрагмент кода:
sub foo {
...
if ( $@ ) {
...
die $@;
}
}
Решение
Если есть синтаксическая ошибка или время выполнения ошибка или "умереть" заявление выполнено, неопределенное значение возвращено "eval", а $ @ установлено в сообщение об ошибке. Если бы не было ошибка, $ @ гарантированно будет нулевым строка. Р>
См. также perldoc perlvar
.
Другие советы
$ @
- магическая переменная, содержащая сообщение об ошибке последней команды eval
, если таковая имеется.
Циклу if должен предшествовать eval, чтобы он мог перехватывать $ @.
Во время eval () $ @ всегда устанавливается при сбое и очищается при успехе.
В случае, если код внутри eval () не скомпилирован, $ @ устанавливается на ошибку компиляции.
Не связан с StackOverflow