我在我的Perl脚本中使用Term::ANSIColor
来对终端输出进行着色,我正在使用colorstrip
函数,该函数仅在Term::ANSIColor
版本2.01中添加,根据变更日志。那么,如果找不到die
的那个版本,有没有办法让我的脚本自动Term::ANSIcolor
带有相应的错误消息?
答案 0 :(得分:21)
只需:
use Term::ANSIColor 2.01;
请参阅perldoc -f use
:
使用模块版本列表
如果Module和LIST之间存在VERSION参数,则use将使用给定版本作为参数调用Module类中的VERSION方法。如果给定版本大于变量$ Module :: VERSION的值,则继承自UNIVERSAL类的默认VERSION方法会突然显示。
答案 1 :(得分:7)
大多数模块定义包变量$VERSION
。
use Term::ANSIColor;
die "Sorry, this program needs Term::ANSIColor >= v2.01!\n"
unless $Term::ANSIColor::VERSION >= 2.01;
这也是指定模块的最大版本的好方法。
use Module::Foo;
die "You need an *older* version of Module::Foo that ",
"still has the &barbaz method defined"
if $Module::Foo::VERSION >= 0.47;
答案 2 :(得分:2)
只需指定您要使用的版本:
use Some::Module 2.13;
如果版本不是至少2.13,则操作将失败。
您可以尝试使用命令行中提供的版本:
perl -MSome::Module=9999 -e 'exit 0'
这通常会因错误消息中显示的错误版本号而死(除非您尝试使用的模块恰好具有5位数或更长版本号,或者除非模块类似于strict
并且不喜欢通过命令行加载版本号或URI
(请参阅注释以获取详细信息)。)
$ perl -MFile::Find=999 -e 'exit 0'
File::Find version 999 required--this is only version 1.07 at
/usr/perl5/5.8.4/lib/Exporter/Heavy.pm line 121.
BEGIN failed--compilation aborted.
$ perl -e 'use File::Find 999; exit 0'
File::Find version 999 required--this is only version 1.07 at -e line 1.
BEGIN failed--compilation aborted at -e line 1.
$
在我通常不使用的机器上运行,因此Perl的陈旧版本。