Moose变量名称可能不包含:: at

问题描述 投票:0回答:1

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

变量名可能不包含:: 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);
};

我找到了一个关于bug的链接:http://codeverge.com/perl.perl5.porters/a-very-old-bug-in-safe.pm/2018166

这有关系吗?

如果我把'::'拿出去,它会消失,但是我一直在用我命名的方式混淆,所以如果有一个解决方法,我会很感激。

-E

perl perl-module moose
1个回答
5
投票

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

emitEvent::ENOTE::Final不是可接受的Perl方法名称,因为Perl将其视为Final包中名为emitEvent::ENOTE的方法。如果你在创建一个名为that的方法中愚弄了一些东西,你应该解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.