2013-07-03 58 views
1

我正面臨着Perl的一些問題。執行期間,我收到了這個錯誤。Perl重定向到錯誤的執行路徑

Can't locate XML/LibXML/NodeList.pm in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/lib64/perl5/XML/LibXML.pm line 25. 

但是,當我試圖找到這個文件使用locate命令我發現它下。 /usr/local/lib/perl5/site_perl/5.18.0/x86_64-linux/XML/LibXML/目錄。

我安裝了不同的perl軟件包,它們都安裝正確。如果我把單個文件放在指定的位置,那麼它會抱怨另一個文件。所以手動放置文件不是一個好主意。

那麼,我如何改變它的路徑,以便它可以從正確的目錄執行文件?

編輯

Can't locate loadable object for module XML::LibXML in @INC (@INC contains: /usr/local/lib64/perl5 /usr/local/share/perl5 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5 .) at /usr/local/lib64/perl5/XML/LibXML.pm line 154 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] BEGIN failed--compilation aborted at /usr/local/lib64/perl5/XML/LibXML.pm line 154. 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] Compilation failed in require at /var/www/cgi-bin/astpp/astpp-cdr-xml.cgi line 23. 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] BEGIN failed--compilation aborted at /var/www/cgi-bin/astpp/astpp-cdr-xml.cgi line 23. 
[Wed Jul 03 10:15:13 2013] [error] [client 192.73.242.136] Premature end of script headers: astpp-cdr-xml.cgi 
+0

可能的重複[如何包含在不同目錄中的Perl模塊?](http://stackoverflow.com/questions/841785/how-do-i-include-a-perl-module-thats- in-a-different-directory) – m0skit0

回答

6

,你可能已經發現的XML::LibXML實例屬於不同安裝的perl。即使您擴展搜索路徑以包含其位置,它也可能不起作用。

你應該重新安裝庫,使用任何適當的工具 - 可能是cpan

+0

我已經用'cpan -fi XML :: LibXML :: Nodelist'試過,即使這個模塊安裝正確,我得到這個錯誤。 – juned

+0

「XML :: LibXML :: Nodelist」包是「XML :: LibXML」的一部分。只需輸入'cpan XML :: LibXML'。 – Borodin

+0

我仍然得到錯誤,但它的不同,請參閱我的編輯 – juned

0

我同意Borodin。看起來你的Perl安裝可能與已經安裝在系統上的標準Perl不同。

如果您輸入會發生什麼:

$ which perl 

$ type perl 

其中這兩個命令都應該顯示哪些Perl程序被默認執行。

Perl程序的第一行指向哪個Perl可執行文件? (它看起來像#! /usr/bin/perl它們是兩個不同的位置?

,當你在perl -V鍵入應列出所有可能安裝您的Perl模塊的標準位置會發生什麼?

它也有可能是你的安裝XML::LibXML模塊是壞的。我想你看到的目錄是二進制程序XML::LibXML取決於,但也應該是一個Perl的版本,這將使指的是二進制的地方,比如usr/local/lib/perl5/site_perl/5.18.0/XML/LibXML/

嘗試重新安裝該模塊與CPAN和之後,運行以下通訊和:

$ perldoc -l XML::LibXML::Nodelist 

並查看它的安裝位置。

+0

'perl'和'type perl'給出相同的輸出,'perl -V'命令給出了很多細節。 – juned

+0

@juned它們都列出Perl從哪裏執行。有時候是一種工作,有時是另一種。問題在於他們說Perl在哪裏,而在Perl腳本中如何說。例如,'type perl'說'/ usr/bin/perl',腳本的頂部寫着'#!在/ usr/local/bin目錄/ perl'。 Perl腳本頂部的行與'type perl'中的Perl的位置不同? –

+0

@juned是'perl -V'提供了很多信息,但是最後一個位列出了'@ INC'中的內容,它是Perl模塊的默認搜索路徑。試試這個'perl -Mfeature = say -e'說連接「\ n」,@INC;''命令來獲取模塊目錄的列表。 –