perl模块类:: HPLOO v0.23安装问题

时间:2018-08-24 16:59:31

标签: perl

我正在尝试安装Class :: HPLOO perl模块并遇到问题。我正在使用Perl版本5.28.0。我迫切需要帮助来解决此问题,而且自最近几天以来,我一直在尝试解决这一问题,但没有运气:(。

我尝试通过cpan安装并出现以下错误:

# Running under perl version 5.028000 for linux
# Current time local: Thu Aug 23 22:50:40 2018
# Current time GMT:   Fri Aug 24 02:50:40 2018
# Using Test.pm version 1.31
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.32), passed through in regex; marked by <-- HERE in m/({ <-- HERE \s+)/ at blib/lib/Class/HPLOO.pm line 1072.
Unescaped left brace in regex is deprecated here (and will be fatal in Perl 5.30), passed through in regex; marked by <-- HERE in m/(\S)( { <-- HERE ) (\S)/ at blib/lib/Class/HPLOO.pm line 1077.
not ok 1
# Failed test 1 in test.pl at line 9
#  test.pl line 9 is:   ok(!$@) ;
Undefined subroutine &Foo::new_call_BEGIN called at test/classtest.pm line 5.
make: *** [test_dynamic] Error 255

我已经从https://metacpan.org/pod/Class::HPLOO网站下载了模块,并尝试手动安装但存在相同问题。

# Running under perl version 5.028000 for linux
# Current time local: Fri Aug 24 12:42:24 2018
# Current time GMT:   Fri Aug 24 16:42:24 2018
# Using Test.pm version 1.31
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

请帮助解决此问题。预先感谢!

2 个答案:

答案 0 :(得分:4)

CPAN testers matrix显示此模块无法在Perl v5.22或更高版本上构建。如果您能够在Perl的早期版本上使用和构建此模块,那么这是您的一个选择。

日志显示与发现的问题相同:已弃用的正则表达式构造,但这不是致命错误(尚未),也不是构建失败的原因。

在调试器中使用Perl v5.24深入并运行测试脚本,我看到那一行

eval { require "test/classtest.pm" } ;

使用以下消息设置$@(表示require调用失败)

  DB<1> p $@                                                                                                                                                   
Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at test/classtest.pm line 5.
 at test/classtest.pm line 5.
        require test/classtest.pm called at test.pl line 8
        eval {...} called at test.pl line 8
Compilation failed in require at test.pl line 8.

因此,我们看到此软件包(最近一次更新于2005年)使用的是defined(@array)结构,该结构已被弃用很长时间,并且已经prohibited since v5.22.0

defined(@array)lib/Class/HPLOO/Base.pm中的lib/Class/HPLOO.pm结构使用了4次。您可以尝试自己修复它们并重建模块。

答案 1 :(得分:0)

除了Mob建议的更改之外,您还需要编辑该模块的test.pl文件。在4个位置中,您会找到“ eval {require“ some / path>”};“将其更改为“ eval {require” ./some/path“};”

还会出现一个未转义的左括号,显然需要将其转义。

这使我能够成功完成HPLOO的安装,然后继续进行DBD的成功安装。