Perl 尝试运行图表单击器时编译失败

Perl 尝试运行图表单击器时编译失败,perl,subroutine,Perl,Subroutine,我正在尝试用Perl制作作品。我已经下载了示例pie.pl。我已经通过正确安装所有模块配置了所有内容。但是每当我尝试运行pie.pl示例时。我得到以下例外。有人能告诉我为什么会发生这种情况,以及我如何克服这种情况吗 C:\Perl64\site>perl pie.pl Subroutine share_axes_with redefined at lib/Chart/Clicker/Context.pm line 120. The 'add_attribute' method cannot

我正在尝试用Perl制作作品。我已经下载了示例
pie.pl
。我已经通过正确安装所有模块配置了所有内容。但是每当我尝试运行
pie.pl示例时
。我得到以下例外。有人能告诉我为什么会发生这种情况,以及我如何克服这种情况吗

C:\Perl64\site>perl pie.pl
Subroutine share_axes_with redefined at lib/Chart/Clicker/Context.pm line 120.
The 'add_attribute' method cannot be called on an immutable instance at C:/Perl64/site/lib/Class/MOP/Class/Immutable/Trait.pm line 32.
        Class::MOP::Class::Immutable::Trait::_immutable_cannot_call('add_attribute') called at C:/Perl64/site/lib/Class/MOP/Class/Immutable/Trait.pm l
ine 47
        Class::MOP::Class:::around('CODE(0x35683d8)', 'Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x5833518)', 'domain_axis', 'default', 'C
ODE(0x3dd85d0)', 'is', 'rw', 'isa', 'Chart::Clicker::Axis', ...) called at C:/Perl64/site/lib/Class/MOP/Method/Wrapped.pm line 162
        Class::MOP::Method::Wrapped::__ANON__('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x5833518)', 'domain_axis', 'default', 'CODE(0x3d
d85d0)', 'is', 'rw', 'isa', 'Chart::Clicker::Axis', 'definition_context', ...) called at C:/Perl64/site/lib/Class/MOP/Method/Wrapped.pm line 91
        Class::MOP::Class::Immutable::Moose::Meta::Class::add_attribute('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x5833518)', 'domain_ax
is', 'default', 'CODE(0x3dd85d0)', 'is', 'rw', 'isa', 'Chart::Clicker::Axis', 'definition_context', ...) called at C:/Perl64/site/lib/Moose.pm line 79

        Moose::has('Class::MOP::Class::Immutable::Moose::Meta::Class=HASH(0x5833518)', 'domain_axis', 'is', 'rw', 'isa', 'Chart::Clicker::Axis', 'defa
ult', 'CODE(0x3dd85d0)') called at C:/Perl64/site/lib/Moose/Exporter.pm line 382
        Moose::has('domain_axis', 'is', 'rw', 'isa', 'Chart::Clicker::Axis', 'default', 'CODE(0x3dd85d0)') called at lib/Chart/Clicker/Context.pm line
 41
        require lib/Chart/Clicker/Context.pm called at pie.pl line 5
        main::BEGIN() called at lib/Chart/Clicker/Context.pm line 0
        eval {...} called at lib/Chart/Clicker/Context.pm line 0
Compilation failed in require at pie.pl line 5.
BEGIN failed--compilation aborted at pie.pl line 5.

如果任何人需要任何文件的更多信息。请让我知道,我将上传该文件。

我猜您需要运行
moose-outleted
。这是一个随附的脚本,运行它将生成一个与您安装的Moose版本不兼容的模块列表(如果有)。升级这些模块。

我猜您需要运行
moose-outleted
。这是一个随附的脚本,运行它将生成一个与您安装的Moose版本不兼容的模块列表(如果有)。升级这些模块。

运气好的话,评论一下
\uuuuu-PACKAGE\uuuuu->meta->make\u-immutablelib/Chart/Clicker/Context.pm
中的code>可能会有所帮助。但这可能会破坏其他东西…这是一个非常有趣的问题。我尝试过注释,但它对我不起作用,它破坏了其他东西,之后我又遇到了一些错误。好吧,似乎发生的事情是,
Context.pm
尝试构建一个类,然后声明它为final(在Java中模拟final类)。但是您的错误消息说,该类是在完成任何其他操作之前完成的,因此不能以编程方式构建它(使用Moose的
has
函数)。我觉得有人可能弄乱了BEGIN块,但我一点也不知道为什么在测试模块时没有发生这种情况lib/Chart/Clicker/Context.pm中的code>可能会有所帮助。但这可能会破坏其他东西…这是一个非常有趣的问题。我尝试过注释,但它对我不起作用,它破坏了其他东西,之后我又遇到了一些错误。好吧,似乎发生的事情是,
Context.pm
尝试构建一个类,然后声明它为final(在Java中模拟final类)。但是您的错误消息说,该类是在完成任何其他操作之前完成的,因此不能以编程方式构建它(使用Moose的
has
函数)。我觉得有人可能弄乱了BEGIN块,但我一点也不知道为什么在测试模块时不会发生这种情况。从哪里、如何运行此脚本以及在哪里可以找到它?@rjchar,在您安装Moose时,应该会自动安装它。尝试在shell中键入
moose-outleted
。否则,将Moose tarball,
cd
提取到其中,然后键入
perl-bin/Moose-outleted
。我尝试执行
Moose-outleted
,但什么也没发生。然后在那之后,当我尝试执行
perl pie.pl
时,我又遇到了我在问题中提到的相同错误。@rjchar,如果
moose-outlated
没有输出,那么过时的MooseX模块就不是问题;这是另外一回事。从哪里、如何运行此脚本以及在哪里可以找到它?@rjchar,当您安装Moose时,它应该已自动安装。尝试在shell中键入
moose-outleted
。否则,将Moose tarball,
cd
提取到其中,然后键入
perl-bin/Moose-outleted
。我尝试执行
Moose-outleted
,但什么也没发生。然后在那之后,当我尝试执行
perl pie.pl
时,我又遇到了我在问题中提到的相同错误。@rjchar,如果
moose-outlated
没有输出,那么过时的MooseX模块就不是问题;这是另外一回事。