首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >perl模块类::HPLOOv0.23安装问题2

perl模块类::HPLOOv0.23安装问题2
EN

Stack Overflow用户
提问于 2018-08-25 23:01:33
回答 2查看 517关注 0票数 2

有了“:perl module Class::HPLOO v0.23 install issue”中描述的确切问题,我试图通过编辑到(@array)并尝试重新构建模块来纠正defined(@array)问题。然而,我继续得到以下的回报:

代码语言:javascript
运行
复制
$ 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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-08-26 02:17:31

Class::HPLOO有三个问题(正如我之前提到的,自2005年以来一直没有更新),这使得它在现代perls中失败了。

  1. As discovered in the previous post,过时的构造defined (@array)只在lib/Class/HPLOO.pm' and three times inlib/Class/HPLOO/Base.pm中使用过一次。这种建筑从5.22开始就被禁止了。
  2. 当前目录(.)不再在@INC中(我认为从5.24版本开始)。所以test.pl中的线条就像 要求测试/classtest.pm

所有这些都需要重写为

代码语言:javascript
运行
复制
    require "./test/classtest.pm"

或者更简单的解决办法是

代码语言:javascript
运行
复制
    use lib '.';

在剧本的顶端。

  1. lib/Class/HPLOO.pm中有一个正则表达式,第1077行带有“未转义的左大括号”。 $sub =~ s/(\S)( {) (\S)/$1$2\n$FIRST_SUB_IDENT $3/gs;

{是一个正则元字符,从5.22版本开始,在没有指示数量的上下文中使用它是非法的。正如错误信息所建议的,修复方法是转义它。

代码语言:javascript
运行
复制
      $sub =~ s/(\S)( \{) (\S)/$1$2\n$FIRST_SUB_IDENT  $3/gs ;

对您从CPAN下载的代码进行这三项更改,模块应该建立在现代Perls之上。如果你觉得有用,你可以提交一个bug报告(如果你想的话,可以链接到这篇文章),甚至可以提交一个带有电子邮件到bug-Class-HPLOO@rt.cpan.org的补丁。

票数 1
EN

Stack Overflow用户

发布于 2019-03-29 11:22:15

今天遇到这个问题,所以我按照上面的答案修正了它。如果有人想节省点时间。

我创建了一个带有变化的回购。HPLOO.git

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52021890

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档