Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl &引用;散列元素的奇数“;声明MooseX::ClassAttribute时_Perl_Moose_Class Attribute - Fatal编程技术网

Perl &引用;散列元素的奇数“;声明MooseX::ClassAttribute时

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

在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行使用“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:请你写一个解决方案并接受它。谢谢