Perl &引用;散列元素的奇数“;声明MooseX::ClassAttribute时
在OSX“Mavericks”上,这是:Perl &引用;散列元素的奇数“;声明MooseX::ClassAttribute时,perl,moose,class-attribute,Perl,Moose,Class Attribute,在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/ClassAttri
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行使用“strict refs”时,不能将字符串(“文件”)用作哈希引用
我已经想尽一切办法想弄清楚这里到底发生了什么,但我被难住了。还有什么我必须先“使用”或声明的吗?(这是我能想到的最小的测试用例,但是每当我在模块中使用class_has()时,错误就会发生。)当您从使用Moose的模块中得到奇怪的错误时,首先要做的是在命令行运行
Moose过时的
脚本。您可能有一个过时的MooseX模块,它与安装的Moose版本不兼容
每次升级moose时,您都应该运行
moose-Outleted
,但这很容易忘记,尤其是当moose升级时,因为它是您正在安装的其他模块的依赖项之一。我还没有对moose做过任何工作,但您是否希望将perl模块包含在程序中并运行它?我不认为你应该做perl FOO.pm
,而是perl一些中有使用FOO.pm
的程序。您可能有一个过时且不兼容的模块。我已经测试了您的SSCCE,它运行良好;一如所料。我认为@cjm走上了正确的道路;您的工具链中有些东西已过期、损坏或安装不完整。@cjm,您说得对。我必须重新安装大约六个MooseX模块,然后它才能顺利运行。现在,如果实际的应用程序可以,那就另当别论了:)@amp108:请你写一个解决方案并接受它。谢谢