2011-01-23 59 views

回答

21

剛:

use Term::ANSIColor 2.01; 

perldoc -f use

使用模塊版本列表

如果版本的說法是模塊和列表之間存在,則使用將調用將Module中的VERSION方法與給定版本作爲參數一起使用。如果給定的版本比變量$模塊:: VERSION的值大的默認版本的方法,從通用類繼承,嘎嘎叫着。

7

大多數模塊定義包變量$VERSION

use Term::ANSIColor; 
die "Sorry, this program needs Term::ANSIColor >= v2.01!\n" 
    unless $Term::ANSIColor::VERSION >= 2.01; 

這也是指定最大版本模塊的一個很好的方式。

use Module::Foo; 
die "You need an *older* version of Module::Foo that ", 
    "still has the &barbaz method defined" 
    if $Module::Foo::VERSION >= 0.47; 
+0

這是一個好辦法做到這一點。當您在導入列表中提供版本時,您將依賴實際處理此操作的導入方法。不僅如此,導入技術只需要該版本或更高版本。如果你想要一個特定的版本或版本的範圍,你會得到這種更通用的技術。 – 2011-01-23 07:33:30

+1

實際上,`import`方法不需要任何幫助 - 當你使用`use`或`require`和一個版本號時,就會產生一個調用'VERSION`方法。但是每個沒有特別覆蓋它的包都會從`UNIVERSAL`中獲得一個合適的`VERSION`方法。 – hobbs 2011-01-23 10:22:36

2

只需指定要使用的版本:如果版本不是至少2.13

use Some::Module 2.13; 

,該操作將失敗。

您可以用可用的命令行版本實驗:

perl -MSome::Module=9999 -e 'exit 0' 

這通常會在錯誤信息中顯示(除非你想使用該模塊發生錯誤的版本號死擁有5位或更長的版本號,或者除非模塊類似於strict,並且不喜歡通過命令行加載版本號或像URI(請參閱註釋以瞭解詳細信息))。

$ perl -MFile::Find=999 -e 'exit 0' 
File::Find version 999 required--this is only version 1.07 at 
/usr/perl5/5.8.4/lib/Exporter/Heavy.pm line 121. 
BEGIN failed--compilation aborted. 
$ perl -e 'use File::Find 999; exit 0' 
File::Find version 999 required--this is only version 1.07 at -e line 1. 
BEGIN failed--compilation aborted at -e line 1. 
$ 

在我通常不使用的機器上運行,因此是過時的Perl版本。

相關問題