На что ссылаются номера строк в perl -cw? - PullRequest
3 голосов
/ 24 июня 2010

Когда я запускаю "perl -cw", чтобы проверить синтаксис для моих модулей perl и встречаются предупреждения или ошибки, выдаются два номера строки:

perl -cw lib/My/Module.pm
Global symbol "%badvar" requires explicit package name at lib/My/Module.pm line 93, <DATA> line 132.
lib/My/Module.pm had compilation errors.

"Строка 93" - правильная позиция висходный файл, но что означает « строка 132»?

Ответы [ 2 ]

3 голосов
/ 24 июня 2010

Структура сообщения об ошибке:

сообщение в файл строка x , <<em> ручка > строка y .

  • сообщение - описание ошибки.
  • file - файл, в котором произошла ошибка.
  • x - номер строки в файле, где произошла ошибка.
  • handle - последний дескриптор файла, считанный из.
  • y - последняя строка 1 считывание с ручки.

В вашем случае ошибка произошла в строке 93 файла lib / My / Module.pm после 132-го чтения дескриптора DATA. DATA - это встроенный дескриптор для чтения текста после тега __DATA__ исходного файла. Обратите внимание, что номера строк для дескриптора DATA перекошены. « строка 132» - это 132-я строка после тега __DATA__, а не 132-я строка файла.

1] Технически, это значение $.. Обычно это номер строки, но может быть и другое, если вы изменили значение $/. Это также перекошено для ручки данных.

2 голосов
/ 24 июня 2010

<DATA> относится к дескриптору файла DATA , если в вашем коде есть раздел __DATA__.

Я могу ошибаться, но я считаю, что это также правильное имя для дескриптора файла, из которого вы читаете пустой оператор <>. (РЕДАКТИРОВАТЬ: я не прав, это <ARGV>! Извините.)

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