perl - Moose 变量名称可能不包含 :: at
问题描述
所以我遇到了这个奇怪的错误。
变量名不能包含 :: 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
解决方案
override
的第一个参数必须是继承方法的(非限定)方法名称。
emitEvent::ENOTE::Final
不是可接受的 Perl 方法名称,因为 Perl 会认为它是指Final
在 package中命名的方法emitEvent::ENOTE
。如果你在创建一个名为 that 的方法时欺骗了某些东西,你应该修复它。
推荐阅读
- android - 回购同步挂在 96%(Orangefox 恢复)
- c++ - 不存在从“std::string”到“const char *”的合适转换函数c++
- python - 带有 shell 脚本的 aws cli:上传失败:无法找到凭据
- r - R绘图限制和轴标签/标题之间的通用距离
- python-3.x - 替换 Python F 字符串的选项
- javascript - 为什么我在弹出模式下的切换模式不动?
- python - Python - 删除行索引并插入列标题
- laravel - 如何在laravel中为同一路由组动态设置前缀中的角色名称
- flutter - 在文本字段上打开键盘时显示白屏
- c# - WiX 在哪里缓存路径名?