Почему мне нужно локализовать $@ перед использованием eval?

Я знаю, что $@— глобальная переменная, но не могу понять, зачем мне ее локализовать перед использованием eval:

Например:

eval { SOME_FUNC_THAT_MAY_DIE(); };
if ($@) {
  print "An error occured!\n";
}

Единственная возможная вещь, о которой я могу думать, это то, что если какой-то обработчик сигнала вызовет dieв то же время, когда я попытаюсь прочитать $@, что я здесь упускаю?

6
задан cjm 5 July 2012 в 21:08
поделиться