当我运行“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行”是源文件中的正确位置,但“&lt; DATA&gt;第132行”是指什么?
答案 0 :(得分:3)
错误消息的结构是:
在文件行 x ,&lt; 句柄&gt;消息 line y 。
在你的情况下,在第132次读取DATA句柄之后,错误发生在lib / My / Module.pm的第93行。 DATA是用于在源文件的__DATA__
标记之后读取文本的内置句柄。请注意,DATA句柄的行号是倾斜的。 “&lt; DATA&gt;第132行”是__DATA__
标记之后的第132行,而不是文件的第132行。
1]从技术上讲,它是$.
的值。这通常是行号,但如果您更改了$/
的值,则可能是其他内容。这也是DATA句柄的偏差。
答案 1 :(得分:2)
<DATA>
部分, __DATA__
会引用DATA filehandle。
我可能错了,但我相信它也是您使用空<>
运算符读取的文件句柄的正确名称。 (编辑:我错了,那是<ARGV>
!抱歉。)