как Perl реагирует во время компиляции и выполнения - PullRequest
1 голос
/ 15 марта 2012

что я понимаю по этому поводу:

Во время время компиляции ошибка - это одна из причин, по которым Perl не может проанализировать файл;такой как отсутствующая точка с запятой.

И ошибка времени выполнения - это ошибка, которая не может быть обнаружена, пока не будет выполнен код;например, ошибка деления на ноль или вызов неопределенной подпрограммы.

Поскольку perl является языком интерпретатора, весь код или сценарий будет выполнен один раз, а затем запущен или будет компилироваться для каждого без исключениязатем бегите.

Может ли кто-нибудь проинформировать меня об этом, пожалуйста.

Ответы [ 2 ]

2 голосов
/ 15 марта 2012

Программа будет скомпилирована один раз в optree. Оптри пройдено и выполнено.

Во время выполнения может возникнуть необходимость в дополнительных фазах компиляции. Обычными виновниками являются строка eval и отложенная / динамическая загрузка единиц кода, например требуется , до .

0 голосов
/ 15 марта 2012

Perl - это интерпретируемый язык *1001*, что означает, что и фаза компиляции, и фаза запуска происходят последовательно каждый раз, когда вы пытаетесь запустить скрипт.

Скомпилированные языки с другой стороны (C, Pascal и т. Д.) Разделяют эти две фазы и обычно имеют промежуточную фазу, называемую linking , которая объединяет объект файлы и библиотеки в окончательный исполняемый файл .

В скомпилированных языках обнаружение неопределенной функции может происходить либо в фазе компиляции , либо в фазе , связывающей , в зависимости от строгости языковой спецификации. В оригинальном C вызов компоновщика найдет неопределенную функцию, но в C ++ он будет найден компилятором.

Что еще более усложняет ситуацию, некоторые языки, такие как Java, имеют отдельные фазы компиляции и выполнения, но компиляция на самом деле представляет собой промежуточный «байт-код», который затем интерпретируется системой времени выполнения (т.е. виртуальная машина Java).

Строго говоря, Perl также использует промежуточный байт-код, но разделение фаз в большинстве случаев невидимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...