2010-11-18 72 views
0

我所處的情況是,我編寫了一個使用CPAN庫XML :: Simple的perl腳本,並在具有安裝必要CPAN庫的環境中進行測試。是否可以手動將CPAN庫包含在Perl腳本中?

但是腳本必須運行的環境沒有安裝CPAN庫的權限。我想知道是否有一些手動方法將Simple.pm文件包含在我的腳本中,並將其與腳本一起包含在目錄中?我曾嘗試使用'use'和'require'無濟於事。

任何幫助,非常感謝。

編輯:我能夠通過手動下載Simple.pm文件並使用行require「Simple.pm」來解決問題;在我的代碼中。我想,當我嘗試這種方式時,我肯定已經下載了不正確的文件。謝謝。

+1

所有環境都有「安裝CPAN庫的權限」:請參閱App :: cpanminus,local :: lib等。這只是將PERL5_LIB設置到正確位置的問題。 – mfontani 2010-11-18 12:38:37

+0

這是一個非常嚴格的大學網絡/服務器。我沒有權限安裝它們。 – Drake 2010-11-18 23:33:10

回答

1

我能夠通過手動下載Simple.pm文件並使用行require「Simple.pm」來解決問題;在我的代碼中。我想,當我嘗試這種方式時,我肯定已經下載了不正確的文件。

5

由於XML::Simple是純Perl模塊,因此您可以下載軟件包並解壓並使用它。您將不得不使用lib雜注指定包含該模塊的目錄。

假設你的目錄結構(僅限於相關文件已被包括在內):

my_app.pl 
XML-Simple 
XML-Simple/lib 
XML-Simple/lib/XML 
XML-Simple/lib/XML/Simple.pm 

my_app.pl將通過包括下面的代碼訪問XML::Simple

use lib 'XML-Simple/lib'; 
use XML::Simple; 
+1

另外,rlib可能在這裏很有用: 'use rlib'../ XML-Simple/lib';'。 請參閱http://search.cpan.org/perldoc?rlib – slu 2010-11-18 13:02:13

3

您當然可以包括XML ::簡單本身與你模塊,但然後XML ::簡單本身取決於其他模塊。它需要XML :: Parser(依賴於libexpat)或XML :: SAX。 XML :: SAX包含XML :: SAX :: PurePerl,這是一種很慢的(並且在上次我很久以前檢查過的時候是不完整的)pure-perl解析器。或者,XML :: SAX可以使用XML :: LibXML(取決於libxml2)或XML :: SAX :: Expat

底線:如果您希望自己的應用程序是自包含的,那麼您至少需要包含XML: :Simple和XML :: SAX,並且過去要處理的特定數據量,您可能還需要一個C語法分析庫。

0

我做這樣的事情:

use FindBin; 

BEGIN { 
    unshift @INC $FindBin::Bin 
} 

然後

use XML::Simple; 

應該只是工作,它可讓您與您的腳本釋放包。

相關問題