Isn';t List::Util是标准Perl发行版的一部分吗?
在某个系统上,我运行的是一个perl脚本,它失败的原因是Isn';t List::Util是标准Perl发行版的一部分吗?,perl,list,cygwin,activestate,Perl,List,Cygwin,Activestate,在某个系统上,我运行的是一个perl脚本,它失败的原因是 无法在\searchCobolPgms.ps第7行的@INC(@INC-contains:/ActiveState/perl/lib/ActiveState/perl/site/lib.)中找到List/Util.pm。 现在奇怪的是,在将代码部署到失败的系统之前,我在笔记本电脑上运行了它,它运行得很好。这两个系统的不同之处在于,在我的笔记本电脑中,我使用的是Cygwin,perl与之捆绑在一起,并且所述的失败系统已经失效 所以现在我很困
无法在\searchCobolPgms.ps第7行的@INC(@INC-contains:/ActiveState/perl/lib/ActiveState/perl/site/lib.)中找到List/Util.pm。
现在奇怪的是,在将代码部署到失败的系统之前,我在笔记本电脑上运行了它,它运行得很好。这两个系统的不同之处在于,在我的笔记本电脑中,我使用的是Cygwin,perl与之捆绑在一起,并且所述的失败系统已经失效
所以现在我很困惑。Isn;t List::Util是标准perl发行版的一部分吗?
我困惑的原因是什么
List::Util仅在5.7(开发版本)中添加到core,包含List::Util的perl的第一个稳定版本是5.8.0。因此,虽然它在cygwin下安装的perl 5.10发行版中,但调用的perl 5.6.1 ActiveState可执行文件中没有它。您应该将ActiveState perl至少更新为5.8.0,然后它将拥有您需要的模块
这里有一个链接,可以找到包含核心模块的所有perl版本:当我选中
核心列表时,我得到:
corelist List::Util
List::Util was first released with perl v5.7.3
您的perl版本似乎是5.6.1,在这种情况下,List::Util
不会成为核心安装的一部分
从路径c:\cygwin\lib\perl5\5.10
判断,似乎您的cygwin版本至少为5.10,但您将注意到,cygwin路径不在其他perl版本的@INC
中。它们很可能是单独安装的,因此不共享库
更新ActiveState perl,一切都会好起来 我怀疑您正在使用的perl的古老版本不包括它。它并不总是核心库的一部分。@BrianRoach,是的,你的猜测是正确的。这就是问题所在。Perl5.6.1已经有十多年的历史了。请更新到最近的内容。我推荐草莓,谢谢。这对我来说很有意义。不幸的是,我不能那么容易地更新ActiveState perl,因为这意味着除了整个认证链之外,我还必须处理整个法律和版权事务。因此,这意味着我必须改变我的脚本,不使用List::Util。再次感谢esp提供的链接:-)好的,您也可以只安装List::Util而不更新ActiveState。CPAN上1.23_03版有一个名为Scalar List Utils的包,它似乎与perl 5.6兼容,自述文件中列出了一个警告:-至少您需要通过法律部门了解的内容较少:)您也没有理由找不到打算安装在perl 5.6上的真正旧版本的List::Util。列表::Util 1.06_00是添加到core的版本,所以之前的任何版本都打算安装在perl 5.6上。您可以在Thank TLP从BackPAN获得所有版本的软件包。当然,现在我明白了。我刚从DAN那里得到链接,它将帮助我进行兼容性编码:-)
c:\cygwin\lib\perl5\5.10>find . -name Util.pm
./CGI/Util.pm
./i686-cygwin/Hash/Util.pm
./i686-cygwin/List/Util.pm
./i686-cygwin/Scalar/Util.pm
corelist List::Util
List::Util was first released with perl v5.7.3