【发布时间】:2014-11-07 22:32:24
【问题描述】:
在 OSX 'Mavericks' 上,这个:
package FOO;
use Moose;
use MooseX::ClassAttribute;
class_has 'BAR' => ( is => 'rw' );
... 根据 'perl -c' 检查干净:
FOO.pm 语法正常
...但是如果我只使用 'perl FOO.pm' 运行它会出现此错误:
/System/Library/Perl/Extras/5.16/MooseX/ClassAttribute.pm 第 37 行的哈希分配中的元素数为奇数。 在 /Library/Perl/5.16/darwin-thread-multi-2level/Moose/Meta/Attribute.pm 第 71 行使用“严格引用”时,不能使用字符串(“文件”)作为 HASH 引用。
我已经尽我所能弄清楚这里发生了什么,但我很难过。还有什么我必须先“使用”或声明的吗? (这是我能想到的最小的测试用例,但是每当我在模块中使用 class_has() 时都会发生错误。)
【问题讨论】:
-
我还没有真正对 Moose 做过任何工作,但是你想将你的 perl 模块包含在一个程序中并运行它吗?我认为您不应该使用
perl FOO.pm,而是应该使用perl some_program.pl,其中包含use FOO.pm。 -
尝试在命令行运行
moose-outdated。您可能有一个过时且不兼容的模块。 -
我已经测试了您的 SSCCE,它工作正常;完全符合预期。我认为@cjm 是在正确的轨道上;您的工具链中的某些内容已过时、损坏或未完全安装。
-
@cjm,你是对的。我不得不重新安装大约六个 MooseX 模块,然后它运行顺利。现在,如果只有实际的应用程序可以,但那是另一回事了 :)
-
@amp108:请您写一个解决方案并接受它。谢谢。
标签: perl moose class-attribute