【发布时间】:2012-01-21 14:02:36
【问题描述】:
可能重复:
How can I find the version of an installed Perl module?
我试过perl -MMODULE -e 'print Thread::Semaphore';,但没用!什么是正确的命令?
【问题讨论】:
可能重复:
How can I find the version of an installed Perl module?
我试过perl -MMODULE -e 'print Thread::Semaphore';,但没用!什么是正确的命令?
【问题讨论】:
我发现了一些有趣的东西想分享:
perl -MThread::Semaphore\ 9999找到我们的版本真是个绝妙的技巧!!!
【讨论】:
perl -e 'use Thread::Semaphore 9999' 以相同的方式与所有 shell 一起工作,当然调整 windows 的字符串分隔符......并没有改变模块可能有这么高的版本号的事实,遗憾的是解析器不会使用 999 之类的东西,因为它看起来不像一个简单的数字,编译器需要将其解释为版本要求。而Thread::Semaphore 本身似乎有一个错误(至少在 2.12 版中),当你要求它导出它没有的东西时它不会注意到。所以一个有趣但不是万无一失的方法......
假设模块定义了$VERSION(这是模块版本的规范存储位置),这将为您提供版本:
perl -MModule -e 'print "$Module::VERSION\n";'
【讨论】:
perl -MModule -e 'print Module->VERSION'
perl -we '$_=shift; eval "use $_; 1" and print $_->VERSION' Some::Module
perl -MModule -e 'die Module->VERSION' 有点短
perl -MThread::Semaphore -le 'print $Thread::Semaphore::VERSION'
【讨论】:
您可以使用pm_which 找出模块的版本,或模块列表。
$> pm_which -mV Thread::Semaphore Thread
线程::信号量 [2.12]
线程 [ 3.02 ]
pm_which 是Module::Util 的前端,它有更多的方法来查找已安装的模块。
【讨论】:
perl -e 'eval {require Thread::Semaphore;print "Thread::Semaphore => ", $Thread::Semaphore::VERSION,"\n";}; print "\033[31mmissing Thread::Semaphore\033[0m\n";'
【讨论】: