3

我从命令行使用它:

perl -MDateTime::Format::DateManip -le 'print $Some::Module::VERSION'

但只返回一个空行,有什么想法吗?

4

2 回答 2

4

它是伪代码,Some没有设置,所以它只是undef-l标志打印出来,比如perl -le'print undef;

为证据打开警告-w

$ perl -MDateTime::Format::DateManip -wle 'print $Some::Module::VERSION'
Use of uninitialized value $Some::Module::VERSION in print at -e line 1.

替换Some::Module为您想要其版本的模块。

另外,只是为了好玩;)

用于测试版本号的 Perl 简写

use <module> <version>这些是通过利用语法和 perl 对不够新版本的声音拒绝来快速获取版本号的方法。

这些都相当于创建一个 perl 脚本use DateTime 9999;

$ perl -MDateTime\ 9999
DateTime version 9999 required--this is only version 0.51.
BEGIN failed--compilation aborted.

但是,这种方式不是跨平台的,因为您只是在告诉 bash 转义一个空格。这在 windows 中不起作用cmd,因为你必须

$ perl -M"DateTime 9999"
DateTime version 9999 required--this is only version 0.51.
BEGIN failed--compilation aborted.

在这里,您只需将其放在引号中 - 这告诉 cmd 将其作为参数发送给 perl,它会完成相同的工作。

于 2010-01-25T19:15:45.880 回答
2

如果您发现自己经常这样做,您可以从 CPAN下载并安装pmvers 。该脚本将使您免于输入可能很长的模块名称两次:

pmvers DateTime::Format::DateManip
于 2010-01-25T19:38:17.117 回答