如何找到已安裝的Perl模塊的版本?如何找到已安裝的Perl模塊的版本?
這是在底部的答案,但我認爲它足夠重要,住在這裏。有了這些建議,我創造我.bashrc
function perlmodver {
perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . \
" is installed.\n"' $1
}
如何找到已安裝的Perl模塊的版本?如何找到已安裝的Perl模塊的版本?
這是在底部的答案,但我認爲它足夠重要,住在這裏。有了這些建議,我創造我.bashrc
function perlmodver {
perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . \
" is installed.\n"' $1
}
爲什麼你想獲得該模塊的版本?你是否需要在程序中使用它,你只需要將該號碼傳遞給另一個操作,或者你只是想知道你有什麼?
我有這個內置到cpan
(附帶的perl)與-D
開關,所以你可以看到你已經安裝的版本與當前版本的CPAN:
$ cpan -D Text::CSV_XS Text::CSV_XS ------------------------------------------------------------------------- Fast 8bit clean version of Text::CSV H/HM/HMBRAND/Text-CSV_XS-0.54.tgz /usr/local/lib/perl5/site_perl/5.8.8/darwin-2level/Text/CSV_XS.pm Installed: 0.32 CPAN: 0.54 Not up to date H.Merijn Brand (HMBRAND) [email protected]
如果你想看到所有出的最新模塊,使用-O
(大寫的O)開關:
$ cpan -O Module Name Local CPAN ------------------------------------------------------------------------- Apache::DB 0.1300 0.1400 Apache::SOAP 0.0000 0.7100 Apache::Session 1.8300 1.8700 Apache::SizeLimit 0.0300 0.9100 Apache::XMLRPC::Lite 0.0000 0.7100 ... and so on
如果你想看到這爲所有已安裝的模塊,嘗試-a
開關創建autobundle。
大多數模塊(從CPAN特別是那些)函數有一個$ VERSION變量:
perl -MSome::Module -le 'print $Some::Module::VERSION'
這是最好的方式 – dns 2013-05-05 16:01:29
這不是抽象的任何模塊工作。不正確的答案。 – 2014-02-17 18:49:29
這工作。但是,在Windows上,它應該引用不同的方式(例如[File :: Fetch](http://perldoc.perl.org/File/Fetch.html)):`perl -MFile :: Fetch -le「打印$ File :: Fetch :: VERSION「` - 雙引號而不是單引號(否則,錯誤消息是結果:」無法找到字符串終結符「'」在EOF之前的任何位置,在-e行1.「) – 2015-04-16 20:16:58
如果你是幸運的,該模塊都會有一個命名包變量$ VERSION:
$ perl -MCPAN -e 'print "$CPAN::VERSION\n"'
1.9205
這是需要的模塊要在CPAN分發,但內部開發的莫杜爾斯可能會遵循不同的約定,或者根本不會。
這對於在CPAN上分發的模塊實際上並不需要。許多發行版都會查看該變量來聲明版本,但只有發行版中的主要模塊需要這樣做。例如,查看Mojolicious中不是Mojolicuous.pm的任何模塊。 – 2016-11-03 00:53:32
我寫了一個小腳本來報告:perlver。
這是一個簡單的小工具, 告訴你的.pm文件 所在的是哪個版本,你 已安裝的模塊,並在。它還確保可以成功加載模塊 。它 自動將' - ','/'或 '\'轉換爲'::',因此您可以使用路徑名稱 或分佈名稱而不是 規範模塊名稱。
它假定模塊定義了$ VERSION。如果模塊未定義$ VERSION,它仍會告訴您.pm
文件在哪裏,因此您可以手動檢查它。您也可以在一次檢查幾個模塊:
$ perlver CPAN DBD-Pg Getopt::Long
CPAN 1.7602 is
/usr/lib/perl5/5.8.8/CPAN.pm
DBD::Pg 1.49 is
/usr/lib/perl5/vendor_perl/5.8.8/i686-linux/DBD/Pg.pm
Getopt::Long 2.36 is
/usr/lib/perl5/vendor_perl/5.8.8/Getopt/Long.pm
此外,對於使用Exporter.pm模塊,你可以得到這個信息用這一招:
perl -MSome::Module=99999 -ex
Some::Module version 99999 required--this is only version 1.9205 at ...
對於不使用的模塊Exporter.pm,稍長的伎倆報告同樣的信息:
perl -e'use Some::Module 99999'
Some::Module version 99999 required--this is only version 1.9205 at ...
有一個不太打字技巧,即工程提供你的模塊沒有什麼瘋狂的像Unix時間戳爲版本n紅棕色。
perl -MFoo::Bar\ 9999
這工作,因爲它轉換爲是
use Foo::Bar 9999;
即一個版本美孚::酒吧這至少版本9999或更高版本。 而你得到的是
Foo::Bar version 9999 required--this is only version 1.1.
BEGIN failed--compilation aborted.
(絕招我從馬特鱒教訓。)
我也一直在使用這個很久了。不記得我從哪裏拿起它,但最有可能我從同一個地方得到它。 – rjray 2008-09-26 02:50:03
VERSION是所有Perl類的UNIVERSAL方法。您可以使用它來獲取模塊版本(如果已經設置了它通常的版本)。
這裏是一個班輪在你只有一次添加模塊名稱:
perl -le 'eval "require $ARGV[0]" and print $ARGV[0]->VERSION' Some::Module
退房CPAN上pmtools腳本。如果您使用的是Debian(基於)的發行版,那麼還有一個方便的pmtools package。這包括一個腳本「pmvers」,告訴你一個模塊的版本。這非常方便。
它的功能類似於發佈的各種單行版本,但它對於錯誤處理有點聰明,並且可以同時爲您提供多個模塊的版本。
感謝您的答案!我創建了一個功能,在我的.bashrc容易地找到一個Perl模塊的版本:Solaris 10中
function perlmodver {
perl -M$1 -e 'print $ARGV[0]->VERSION . "\n"' $1
}
我們有系統的Perl(在/ usr/bin中/ perl),並且上述解決方案是無用的。其中一些報告「module.pm未安裝」,其中一些沒有輸出。
這是有用的代碼,它可以列出所有模塊及其版本。
#!/usr/bin/perl
use strict;
use ExtUtils::Installed;
my @modules;
my $installed = ExtUtils::Installed->new();
if (scalar(@ARGV) > 0) {
@modules = @ARGV;
} else {
@modules = $installed->modules();
}
print "Module\tVersion\n";
foreach (@modules) {
print $_ . "\t" . $installed->version($_) . "\n";
}
您還可以看看App::module::version
$ module-version
The version of App::module::version in /home/yourself/perl5/lib/perl5 is 1.004
最容易記住,最可靠的版本對我來說:
perl -e 'use Search::Elasticsearch; print $Search::Elasticsearch::VERSION;'
參見http://stackoverflow.com/questions/ 1920045 /如何獲取版本和位置的安裝perl模塊 – Ether 2009-12-29 01:02:22