Что означает специальная переменная $ @ в Perl?

StackOverflow https://stackoverflow.com/questions/1208213

  •  05-07-2019
  •  | 
  •  

Вопрос

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

sub foo {
    ...
    if ( $@ ) {
        ...
        die $@;
    }
}
Это было полезно?

Решение

perldoc -f eval :

  

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

См. также perldoc perlvar .

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top