perl模块类::HPLOO v0.23安装问题#2
关于确切的问题,如所述:,我试图通过编辑到perl模块类::HPLOO v0.23安装问题#2,perl,module,installation,Perl,Module,Installation,关于确切的问题,如所述:,我试图通过编辑到(@array)并尝试重建模块来纠正已定义(@array)的问题。然而,我继续得到以下回报: $ make clean $ perl Makefile.PL $ make $ make test: *** No rule to make target `clean:'. Stop. Manifying 2 pod documents PERL_DL_NONLAZY=1 "/opt/local/bin/perl5.26" "-Iblib/lib" "-I
(@array)
并尝试重建模块来纠正已定义(@array)
的问题。然而,我继续得到以下回报:
$ make clean
$ perl Makefile.PL
$ make
$ make test: *** No rule to
make target `clean:'. Stop. Manifying 2 pod documents
PERL_DL_NONLAZY=1 "/opt/local/bin/perl5.26" "-Iblib/lib" "-Iblib/arch"
test.pl
1..42
# Running under perl version 5.026002 for darwin
# Current time local: Sun Aug 26 06:48:26 2018
# Current time GMT: Sat Aug 25 22:48:26 2018
# Using Test.pm version 1.26 not ok 1
# Failed test 1 in test.pl at line 9
# test.pl line 9 is: ok(!$@) ; Can't locate object method "new" via package "Foo" at test.pl line 11. make: *** [test_dynamic] Error 2
Class::HPLOO
有三个问题(正如我之前提到的,自2005年以来一直没有更新过)导致现代perls失败
lib/Class/HPLOO.pm'中使用一次,在lib/Class/HPLOO/Base.pm'中使用三次。从v5.22开始禁止这种构造
)不再位于@INC
(我想从v5.24开始)。因此,test.pl
中的行
require "test/classtest.pm"
require "./test/classtest.pm"
或者更简单的解决方法是
use lib '.';
在脚本的顶部
lib/Class/HPLOO.pm
第1077行有一个正则表达式,带有一个“未缩放的左大括号”
{
是一个regex元字符,从v5.22开始,在不表示数量的上下文中使用它是非法的。正如错误消息所示,修复方法是转义它
$sub =~ s/(\S)( \{) (\S)/$1$2\n$FIRST_SUB_IDENT $3/gs ;
对从CPAN下载的代码进行以下三项更改,模块应基于现代Perls。如果您觉得有帮助,可以提交错误报告(如果您愿意,请链接到本文)甚至是一个带有电子邮件的补丁,发送到
bug类-HPLOO@rt.cpan.org
今天遇到这个问题,所以我按照上面的答案解决了它。如果有人想节省一些时间
我用这些更改创建了一个repo。将
eval{require“test/classtest.pm”}
更改为require“test/classtest.pm”
并查看eval…
是否隐藏了更多错误。返回的结果是:“无法在@INC中找到test/classtest.pm(您可能需要安装test::classtest模块)…。”。没有这样的模块。因为我不知道我在做什么,我将require“test/classtest.pm”
更改为require./test/classtest.pm”
,这使我想到:“'regex中未替换的左大括号在regex中是非法的;在每个位置都有“eval{require}”的错误后,逐个标记”我把它改为“require./”。最终完成了所有测试,没有错误。我通过返回“eval{}”的文件返回。它再次完成了所有测试,没有错误,我可以继续“make install”没有明显的错误。当然,这让我想到了一个问题:我需要在这些位置添加./的地方发生了什么变化,而从前它是一个工作模块?虽然显然不适合我。暴徒,在我对成功的兴奋中,我忘了感谢你。所以,谢谢你!谢谢暴徒,我忘记了未替换的左括号!太好了!May al因此考虑将补丁发送到<代码> bug类HPLOO@rt.cpan.org这样问题也可以在官方发行版中解决?
$sub =~ s/(\S)( \{) (\S)/$1$2\n$FIRST_SUB_IDENT $3/gs ;