【发布时间】:2019-10-08 20:15:39
【问题描述】:
我正在尝试删除一条警告消息,在perldiag 中有以下解释:
Bareword "%s" refers to nonexistent package (W bareword)您使用了“Foo::”形式的限定裸词,但在此之前编译器没有看到该命名空间的其他用途。也许您需要预先声明一个包?
(问题是我有一个子程序将一个对象祝福到一个稍后声明的包中)
我想通过“预先声明”包来遵循手册页中的建议,但我不知道该怎么做。在 Perl 中预先声明一个包的语法是什么?
【问题讨论】:
-
您能否提供一个失败代码的简短工作示例,用于测试?
-
我不知道如何做到这一点,
perl -Mstrict -wE'sub tt { return bless { one=>1 }, "PackName" }; my $obj = tt(); say ref $obj'正确打印PackName。否则,我想BEGIN { package PackName {}; }应该介绍它... -
@zdim
package显然有编译时效果,所以不需要BEGIN。 -
@ikegami 嘿,对。通过在一个单元(和一个单行)中测试(这里是不相关的问题)而误入歧途