在Perl中,如何确定已加载的特定模块的模块版本?

时间:2016-12-14 00:51:40

标签: perl module version

前言:我知道如何加载特定版本的模块。这不是我追求的目标。

我正在编写一个脚本来从我公司的内部服务器检索一些格式化为JSON的文本/纯文本数据。我使用LWP进行数据检索。

我已经完成了所有脚本,但有一个问题。

我在RHEL5上写这个,它使用Perl 5.8.8和LWP 5.805。根据下面的页面,如果我想直接将响应的内容输出到文件,我应该使用:content_file => filename

但是,请注意以下内容。

  

注意这个":content_file"旧版本不支持选项   LWP的版本,所以你应该考虑添加使用LWP 5.66;去检查   LWP版本,如果您认为您的程序可能在具有的系统上运行   旧版本。

     

如果您需要与较旧的LWP版本兼容,请使用此版本   语法,它做同样的事情:

     

use HTTP::Request::Common; $response = $ua->request( GET($url), $filespec );

由于这是RHEL 5,我必须使用较旧的LWP格式,但我想制作我的脚本,以便在RHEL 6及更高版本上运行时使用新样式而不是旧样式。支持:content_file的新版LWP。

因此,我需要知道如何检测模块版本,更重要的是,我需要知道最早支持的LWP版本是什么:content_file

2 个答案:

答案 0 :(得分:6)

版本号LWP::UserAgent位于包变量$LWP::UserAgent::VERSION中,或者如果您已编写$LWP::VERSION来加载模块,则可以使用use LWP

但是,没有理由对模块的不同版本使用不同的方法;向后兼容的替代方案

my $response = $ua->request( GET($url), $filespec )

可以在任何版本上正常工作

答案 1 :(得分:6)

由于所有对象都来自UNIVERSAL,因此您只需$ua->VERSION即可获取该版本。

:content_file中添加了5.66。比较5.655.66之间的文档。