2013-04-30 3 views
5

У меня есть сценарий Perl, который я не могу понять.

for $i(@myarr) 
{ 
    #some stuff 
    eval { 
     #some stuff 
    }; 
    if([email protected]) 
    { 
     print "*** [email protected] ****"; 
    } 
} 
  1. Что это Eval делать? Является ли это стандартной командой Perl или просто частью?
  2. Что такое переменная $ @? В настоящее время он печатает строку, но я не знаю, откуда эта строка.
+2

см. Http://perldoc.perl.org/functions/eval.html –

ответ

7

Чтобы добавить к ответу Suic, см в English модуле, который позволяет использовать более описательный $EVAL_ERROR вместо [email protected] и Try::Tiny или TryCatch модулей, которые избегают общих ловушек, связанные с использованием eval для обработки исключений. Кроме того, в следующий раз, когда вы задаетесь вопросом о функции Perl, perldoc -f - ваш друг (например, perldoc -f eval).

+0

Hi zoul Дополнительная информация! Что касается perldoc -f, я должен запустить его на моем интерпретаторе? Я использую Hamilton C Shell, который может легко обнаружить версию Perl из perl -v, но не может выполнить вашу команду. –

+0

Я понятия не имею о Perl на Windows, извините. Вы всегда можете просто google для «perldoc foo», работает примерно одинаково. – zoul

6

[email protected] Ошибка синтаксиса или рутинное сообщение об ошибке из последней команды eval, do-FILE или require. Если установлено, либо компиляция не удалась, либо функция die была выполнена в коде eval. Пожалуйста, прочитайте этот документ http://perldoc.perl.org/perlvar.html

+0

Спасибо за ответ. Теперь понял, что делает eval. –

Смежные вопросы