【问题标题】:How to find a Perl module's version number though the command line on Unix? [duplicate]如何在 Unix 上通过命令行查找 Perl 模块版本号? [复制]
【发布时间】:2012-01-21 14:02:36
【问题描述】:

可能重复:
How can I find the version of an installed Perl module?

我试过perl -MMODULE -e 'print Thread::Semaphore';,但没用!什么是正确的命令?

【问题讨论】:

    标签: perl module version


    【解决方案1】:

    我发现了一些有趣的东西想分享:

    perl -MThread::Semaphore\ 9999找到我们的版本真是个绝妙的技巧!!!

    【讨论】:

    • 哇,太棒了。您应该在末尾添加“-e1”,以防模块的版本高于您输入的版本,否则它会挂起。我知道能够使用 '-MThread::Semaphore=9999" 并且这不会检查 VERSION,否则会进行正常导入,因此一种解决方法真的很有帮助!:-)
    • 对于某些已安装版本的模块,此行在某些系统上的某些 shell 中生成一些输出这一事实并不能使其成为正确且有用的答案。
    • @Tanktalus 它没有挂起,它只是等待程序从 STDIN 进来。只需键入 Ctrl+D(至少在 linux 上),它就会正确完成。
    • perl -e 'use Thread::Semaphore 9999' 以相同的方式与所有 shell 一起工作,当然调整 windows 的字符串分隔符......并没有改变模块可能有这么高的版本号的事实,遗憾的是解析器不会使用 999 之类的东西,因为它看起来不像一个简单的数字,编译器需要将其解释为版本要求。而Thread::Semaphore 本身似乎有一个错误(至少在 2.12 版中),当你要求它导出它没有的东西时它不会注意到。所以一个有趣但不是万无一失的方法......
    • @BradGilbert - 我知道。如果你不期待的话,我应该把“似乎挂起”。对不起。
    【解决方案2】:

    假设模块定义了$VERSION(这是模块版本的规范存储位置),这将为您提供版本:

    perl -MModule -e 'print "$Module::VERSION\n";'
    

    【讨论】:

    • 规范上,VERSION 可用作类方法;默认的通用方法检查 VERSION 变量。
    • 把ysth的评论变成实用代码:perl -MModule -e 'print Module->VERSION'
    • 更多字符,但您只需更改一次模块名称perl -we '$_=shift; eval "use $_; 1" and print $_->VERSION' Some::Module
    • perl -MModule -e 'die Module->VERSION' 有点短
    【解决方案3】:
    perl -MThread::Semaphore -le 'print $Thread::Semaphore::VERSION'
    

    【讨论】:

      【解决方案4】:

      您可以使用pm_which 找出模块的版本,或模块列表。

      $> pm_which -mV Thread::Semaphore Thread
      
      线程::信号量 [2.12] 线程 [ 3.02 ]

      pm_whichModule::Util 的前端,它有更多的方法来查找已安装的模块。

      【讨论】:

        【解决方案5】:
        perl -e 'eval {require Thread::Semaphore;print "Thread::Semaphore => ", $Thread::Semaphore::VERSION,"\n";}; print "\033[31mmissing Thread::Semaphore\033[0m\n";'
        

        这是我在Find & Checking Modules Used by Perl Programs上发布的内容

        【讨论】:

          猜你喜欢
          • 2011-04-01
          • 2018-02-28
          • 2014-02-08
          • 2013-03-09
          • 2012-03-29
          • 2019-03-26
          • 1970-01-01
          • 2012-01-12
          相关资源
          最近更新 更多