perl -cw中的行号是指什么?

时间:2010-06-24 14:06:07

标签: perl

当我运行“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行”是指什么?

2 个答案:

答案 0 :(得分:3)

错误消息的结构是:

  在文件 x ,&lt; 句柄&gt;

消息 line y

  • 消息是错误的描述。
  • file 是发生错误的文件。
  • x 是发生错误的文件中的行号。
  • handle 是从中读取的最后一个文件句柄。
  • y 是从句柄读取的最后一行 1

在你的情况下,在第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>!抱歉。)