当前位置:  开发笔记 > 编程语言 > 正文

如何找到已安装的Perl模块的版本?

如何解决《如何找到已安装的Perl模块的版本?》经验,为你挑选了6个好方法。

如何找到已安装的Perl模块的版本?

这是在底部的答案,但我认为它足够重要,住在这里.有了这些建议,我在my中创建了一个函数.bashrc

function perlmodver {
    perl -M$1 -e 'print "Version " . $ARGV[0]->VERSION . " of " . $ARGV[0] . \
    " is installed.\n"' $1
}

brian d foy.. 60

你为什么试图获得该模块的版本?你是否需要在一个程序中使用它,你只需要将号码传递给另一个操作,或者你只是想找出你拥有的东西?

我将这个内置到了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)
        h.m.brand@xs4all.nl

如果要查看所有过时的模块,请使用-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开关创建自动提示.



1> brian d foy..:

你为什么试图获得该模块的版本?你是否需要在一个程序中使用它,你只需要将号码传递给另一个操作,或者你只是想找出你拥有的东西?

我将这个内置到了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)
        h.m.brand@xs4all.nl

如果要查看所有过时的模块,请使用-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开关创建自动提示.



2> zigdon..:

大多数模块(尤其是来自CPAN的模块)都有一个$ VERSION变量:

perl -MSome::Module -le 'print $Some::Module::VERSION'


这不是抽象的适用于任何模块.不正确的答案.
这有效.但是,在Windows上它应该以不同的方式引用它(例如[File :: Fetch](http://perldoc.perl.org/File/Fetch.html)):`perl -MFile :: Fetch -le" print $ File :: Fetch :: VERSION"` - 双引号而不是单引号(否则,错误信息的结果是:"在-e第1行的EOF之前的任何地方找不到字符串终止符"')

3> jmcnamara..:

VERSION是所有Perl类的UNIVERSAL方法.您可以使用它来获取模块版本(如果已经设置了它通常具有).

这是一个单行,您只需添加一次模块名称:

perl -le 'eval "require $ARGV[0]" and print $ARGV[0]->VERSION' Some::Module



4> Penfold..:

有一个打字较少的技巧,如果您的模块没有疯狂的东西,比如Unix时间戳作为版本号.

perl -MFoo::Bar\ 9999

这是有效的,因为它转化为

use Foo::Bar 9999;

即Foo :: Bar的版本至少为9999或更新版本.而你得到的是

Foo::Bar version 9999 required--this is only version 1.1.
BEGIN failed--compilation aborted.

(我从Matt Trout那里学到了很多技巧.)



5> Jon Ericson..:

如果幸运的话,模块将有一个名为$ VERSION的包变量:

$ perl -MCPAN -e 'print "$CPAN::VERSION\n"'
1.9205

这需要在CPAN上分发模块,但内部开发的模块可能遵循不同的约定或根本不遵循.



6> Drew Stephen..:

谢谢你的回答!我在.bashrc中创建了一个函数,以便轻松找到Perl模块的版本:

function perlmodver {
    perl -M$1 -e 'print $ARGV[0]->VERSION . "\n"' $1
} 

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有