Директивы строки (#line) используются для реконфигурирования идеи perl текущего имени файла и номера строки. Когда требуется, чтобы, это получает правильное имя файла и номер строки (в сообщении об ошибке)?
Обычно такие маркеры помещены в код, который был предварительно обработан или сгенерирован механически, чтобы вернуться к источнику, созданному человеком.
Например, если существовала программа, конвертирующая Python в Perl, она могла бы вставить
# line 812 "foo.py"
, чтобы сообщения об ошибках относились к исходному коду Python, что было бы более понятным для программиста.
Они полезны при переносе сценария Perl в другой файл, как это делает pl2bat. Perl не видит пакетных команд в начале файла, что лишает его представления о номерах строк. Директива #line
в начале исходного кода Perl компенсирует это.
В дополнение к уже упомянутым причинам perl
имеет (настоятельно не рекомендуется) параметр -P
, который запускает Perl-файл через препроцессор C перед его запуском. Поскольку большинство препроцессоров C будут использовать строковые директивы при включении или удалении части файла, поэтому любые ошибки будут сообщаться с того места, где они были расположены в исходном источнике, а не в обработанном источнике.
Строковые директивы также могут быть очень полезны, если вы генерируете код в строках, который затем передается в eval
. Обычно, если в таком коде есть предупреждение или ошибка, вы получаете сообщение об ошибке типа «умер на (eval 1) строке 1». Используя строковые директивы, вы можете указать полезное имя файла и номер строки.