用大括号指定的包在包含 __DATA__ 段时会报错

编程语言 2026-07-12

在我的Perl代码中,我正在编写一个 package,其中包含一个 __DATA__ 区段,用来嵌入一些Perl代码。

以下是引发错误的代码片段:

package remote {
__DATA__
print "$ENV{HOME}\n";
}

如下所示

Missing right curly or square bracket at ....
The lexer counted more opening curly or square brackets than closing ones.
As a general rule, you'll find it's missing near the place you were last editing.

我似乎找不到任何错配的括号。

相反地,当我不带大括号改写同一个包时,代码就能正常工作。

package remote;
__DATA__
print "$ENV{HOME}\n";

如果有经验的朋友能帮我指出我的理解差距,我将不胜感激。顺便提一句,若有帮助的话,我使用的Perl版本是5.36.1。

解决方案

Perl不会将位于 __DATA__ 这一行之后的内容视为代码。也就是说,它看不到结尾的 }

数据:

__DATA__ 可用于指示在实际结束之前的脚本逻辑结束。任何随后的文本都将被解释器忽略, 除非程序按下述方式读取。

站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。

相关文章