【问题标题】:Moose Variable names may not contain :: atMoose 变量名称可能不包含 :: at
【发布时间】:2019-07-31 19:25:06
【问题描述】:

所以我遇到了这个奇怪的错误。

变量名不能包含:: at .../perl5/lib/perl5/x86_64-cygwin-threads-multi/Class/MOP/Package.pm

触发它的代码是:

override 'emitEvent::ENOTE::Final' => sub {
my ($self, $e) = @_;
my ($rval);

$rval = super();


return($rval);
};

我发现了这个关于错误的链接:http://codeverge.com/perl.perl5.porters/a-very-old-bug-in-safe.pm/2018166

这有关系吗?

如果我把 '::' 去掉,它会消失,但确实会影响我命名事物的方式,所以如果有解决方法,我将不胜感激。

-E

【问题讨论】:

    标签: perl perl-module moose


    【解决方案1】:

    override 的第一个参数必须是继承方法的(非限定)方法名。

    emitEvent::ENOTE::Final 不是一个可接受的 Perl 方法名称,因为 Perl 会将其视为包 emitEvent::ENOTE 中名为 Final 的方法。如果你在创建一个名为 that 的方法时犯了错误,你应该修复它。

    【讨论】:

    • 是的。我正在移植一些其他代码来“Moose-ify”它。我在移植代码时对其进行了重组,结果证明修复非常快。谢谢。
    猜你喜欢
    • 2017-09-27
    • 1970-01-01
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    相关资源
    最近更新 更多