2012-01-01 56 views
4

在一個特定的系統,我運行一個perl腳本,它說不是List :: Util標準Perl分發的一部分嗎?

Can't locate List/Util.pm in @INC (@INC contains: <Some-Path>/ActiveState/perl/lib <Some-Path>/ActiveState/perl/site/lib .) at <Some-Other-Path>\searchCobolPgms.ps line 7.

沒有現在奇怪的部分是,部署代碼到失敗的系統之前,我跑在我的筆記本電腦,它運行良好。這兩個系統的區別在於,在我的筆記本電腦中,我使用的是Cygwin,並且perl與它捆綁在一起,並且所述失敗的系統具有ActiveState perl

<Some-Path>perl -v 

This is perl, v5.6.1 built for MSWin32-x86-multi-thread 
(with 1 registered patch, see perl -V for more detail) 

Copyright 1987-2001, Larry Wall 

Binary build 635 provided by ActiveState Corp. http://www.ActiveState.com 
Built 15:34:21 Feb 4 2003 


Perl may be copied only under the terms of either the Artistic License or the 
GNU General Public License, which may be found in the Perl 5 source kit. 

Complete documentation for Perl, including FAQ lists, should be found on 
this system using `man perl' or `perldoc perl'. If you have access to the 
Internet, point your browser at http://www.perl.com/, the Perl Home Page. 

我接着又搜尋的Util的cygwin的lib下,它在爲i686-cygwin的

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 

所以現在我很困惑出席了會議。 Isn; t List :: Util是標準perl發行版的一部分嗎? 對我的困惑

  1. 名單的原因/ Util.pm正在爲i686-cygwin的
  2. ActiveSync安裝中沒有列出本/ Util.pm
+2

我懷疑你使用的古代版本的Perl不包括它。它並不總是核心庫的一部分。 – 2012-01-01 18:19:39

+0

@BrianRoach,是的,你的猜測是正確的。那就是問題所在。 – Abhijit 2012-01-01 18:36:22

+0

Perl 5.6.1已超過十年。請更新爲更新的內容。我建議草莓Perl - http://strawberryperl.com/ – 2012-01-03 10:07:52

回答

12

名單::的Util才被加入到核心在5.7(一個開發版本),包含List :: Util的perl的第一個穩定版本是5.8.0。因此,雖然它已安裝在cygwin下的perl 5.10發行版中,但您所調用的perl 5.6.1 ActiveState可執行文件沒有它。你應該更新ActiveState perl至少5.8.0,然後它將會有你需要的模塊。

下面是查找包含核心模塊的Perl的所有版本的鏈接:http://perlpunks.de/corelist/version?module=List%3A%3AUtil

+1

謝謝。這對我來說很有意義。不幸的是,我不能更新ActiveState perl,因爲這意味着我必須從整個認證鏈中除去整個法律和版權過程。所以這意味着我必須最終將腳本更改爲不使用List :: Util。再次感謝鏈接:-) – Abhijit 2012-01-01 18:33:51

+0

那麼,你也可以在不更新ActiveState的情況下安裝List :: Util。在CPAN的版本1.23_03上有一個名爲Scalar-List-Utils的軟件包,它似乎與perl 5.6兼容,並在自述文件中列出了一條警告:http://cpansearch.perl.org/src/GBARR/Scalar-List -Utils-1。23_03/README - 在至少它是需要通過法律部門得到的東西少量:) – Dan 2012-01-01 18:56:33

+0

但也沒有理由你不能找到一個真正的老版本列表::的Util原打算安裝perl 5.6。 List :: Util 1.06_00是添加到內核的版本,因此之前的任何內容都打算安裝在perl 5.6上。您可以從http://backpan.perl.org/authors/id/G/GB/GBARR/ – Dan 2012-01-01 19:00:44

10

當我檢查corelist我得到:

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,一切都會好的。

+0

獲得BackPAN的所有軟件包版本,謝謝TLP。現在確實對我有意義。我剛剛從DAN那裏得到了這個鏈接,它將幫助我進行兼容性編碼:-) – Abhijit 2012-01-01 18:35:38

相關問題