2011-04-03 11 views
0

我是一名PHP程序員,剛剛分配了一些任務以工作在某些Perl上 - 我需要安裝模塊。在Windows上用於Perl的網站和站點 lib目錄位置

但是有沒有人可以在安裝模塊時澄清'lib'和'site \ lib'之間的區別。按照什麼標準安裝一個模塊而不是另一個?

這是真的與Windows相關(對不起,從來沒有在UNIX上工作)。

我正在使用Strawberry Perl 5.12.2.0。

回答

5

lib/包含Perl附帶的模塊。 site/lib/包含您自己安裝的模塊。 Perl本身並沒有區分這兩者。

如果site/lib/對於全新安裝不是空的,這可能是因爲Strawberry在其發行版中包含通常不與Perl打包的模塊。 (我知道ActivePerl做的。)

0

SOmetimes它是相關的。有時你必須將env var PERL5LIB設置爲「site \ lib; lib」,有時候它是相反的。

實施例(如2011年4月,有效):

的Perl 5.12包括嘗試::微小0.6。

如果您要安裝Test :: Fatal,它希望Try :: Tiny 0.7+。

所以,你必須從CPAN更新:那麼你會得到嘗試::微小的0.09

但0.09只會被加載時,你就告訴Perl在site \ lib文件先看看。

+1

[自Perl 5.12起,'site'目錄首先出現](http://p3rl.org/perl5120delta#@INC_reorganization) – daxim 2011-04-03 10:06:01

+0

如果某些模塊包含在Perl內核中,它將被安裝到lib /並在那裏更新(5.12行爲相同,但計劃改變)。 – 2011-04-03 20:49:54

+0

只是說在可能值得檢查@INC和/或PERL5LIB的地方。上週我在使用ActiveStateperl 5.12在windows上安裝了最新的模塊時,我感到困惑,我的腳本仍然沒有編譯。原來,我的腳本設置PERL5LIB,以便site \ lib排在第二位。也許這對OP也有幫助(Ikegami已經在同一時間提供了一個完美的答案) – knb 2011-04-03 22:39:59