On Wed, Sep 19, 2007 at 01:29:37PM +0400, Epiphanov Sergei wrote: > В сообщении от Wednesday 19 September 2007 12:53:19 Slava Dubrovskiy > написал(а): > > и т.д. Там где Ok все понятно, а там где "inside eval SKIP" что это > > значит? > > Означает, что запрос на загрузку модуля расположен внутри eval-блока. То есть > сама команда > > eval {use SomeModule}; > > не сломает запуск программы, если модуль SomeModule не стоит, но как при этом > поведёт себя программа, есть ли там проверка $@ или нет - сам парсер ничего > не знает и не сможет определить. Поэтому такие конструкции пропускаются. Этот случай как раз сломает. Все "use" выполняются в безусловном порядке так скоро, как парсер увидел use (perldoc -f use). Вот eval "use SomeModule" # спратяно в строку eval {require SomeModule} это другое дело. Фактически есть два разных eval'а -- т.н. entertry, т.е. eval BLOCK, в котором код уже распарсен, и внутренний парсер в этом случае не запускается. Просто перехватываются "die". И есть eval EXPR, где на EXPR всякий раз запускается парсер (perldoc -f eval).