0

在 OSX 'Mavericks' 上,这个:

package FOO;    
use Moose;
use MooseX::ClassAttribute;
class_has 'BAR' => ( is => 'rw' );

...根据“perl -c”检查是否干净:

FOO.pm 语法OK

...但是如果我简单地使用“perl FOO.pm”运行它就会出现这个错误:

/System/Library/Perl/Extras/5.16/MooseX/ClassAttribute.pm 第 37 行的哈希分配中的奇数个元素。不能使用字符串(“文件”)作为哈希引用,而“严格引用”在 / 中使用库/Perl/5.16/darwin-thread-multi-2level/Moose/Meta/Attribute.pm 第 71 行。

我已经尽我所能弄清楚这里发生了什么,但我很难过。还有什么我必须先“使用”或声明的吗?(这是我能想到的最小的测试用例,但是每当我在模块中使用 class_has() 时都会发生错误。)

4

1 回答 1

1

当您从使用 Moose 的模块中收到奇怪的错误时,首先要做的是moose-outdated在命令行运行脚本。您可能有一个过时的 MooseX 模块,它与安装的 Moose 版本不兼容。

您应该在moose-outdated每次升级 Moose 时运行,但很容易忘记,尤其是在升级 Moose 时,因为它是您正在安装的其他模块的依赖项之一。

于 2014-11-09T07:32:28.823 回答