使用
use Term::Size;
say $Term::Size::VERSION;
我可以找到该模块的版本 脚本怎么能找出这个模块版本的发布日期?
答案 0 :(得分:3)
构建模块搜索的网址,如下所示:“http://search.cpan.org/perldoc?Term::Size".
使用LWP检索网址。请注意,上面的网址会将HTTP重定向响应返回给不同的网址:http://search.cpan.org/~ferreira/Term-Size-0.207/Size.pm
- 这是该模块最新版本的链接。
注意:由于以下原因,需要执行这些步骤(#1-#4):
一个。主要版本永久链接(http://search.cpan.org/dist/Term-Size
)仅适用于最新版本。
湾更大的问题是模块可能是更大分布的一部分。模块他们没有发布日期 - 只有发布日期。例如,对于“XML :: Parser :: Style :: Tree”,它是XML-Parser
分发的一部分,因此URL应该有http://search.cpan.org/~msergeant/XML-Parser-2.36
前缀,如果没有步骤#1-,您将无法自动计算#4。
遗憾的是,在您的示例中,这一重要区别并不明显,因为您只是选择了一个与分发名称共享其名称的模块
通过使用您自己的(例如0.203)替换您从重定向(0.207)自动获得的“最新”版本来更改该URL。得到http://search.cpan.org/~ferreira/Term-Size-0.203/Size.pm
更改该网址以删除特定于模块的后缀,例如“Size.pm” - 你得到http://search.cpan.org/~ferreira/Term-Size-0.203/
,这是该版本发布的URL。
另一种方法是通过WWW :: Mechanize实际抓取模块的页面来获取发布URL,解析HTML cia HTML :: TreeParser或regex,并在HTML的片段中找到发布的相对链接这是 - a href
元素与DIV
元素中的第二个id=premalink
链接:
<a name="_top"></a>
<div class=path>
<div id=permalink class="noprint"><a href="/perldoc?Term::Size">permalink</a>
</div>
<a href="/~ferreira/">Adriano Ferreira</a> >
<a href="/~ferreira/Term-Size-0.203/">Term-Size-0.203</a> >
Term::Size
</div>
现在您拥有适用于您的版本(http://search.cpan.org/~ferreira/Term-Size-0.203/
)的发布页面的网址
通过WWW :: Mechanize检索正确版本的发布页面,并通过HTML :: TreeParser或任何其他喜欢的HTML解析器模块或 gasp 正则表达式进行解析。您正在寻找的是一组HTML,如下所示:
<table>
<tr>
<td class=label>This Release</td>
<td class=cell>Term-Size-0.203</td>
<td><small> [<a href="/CPAN/authors/id/F/FE/FERREIRA/Term-Size-0.203.tar.gz">Download</a>]
[<a href="/src/FERREIRA/Term-Size-0.203/">Browse</a>] </small></td>
<td><small>21 May 2006</small>
</td>
</tr>
从HTML开始,您需要从第一个单元格包含“此版本”一词的行<td>
中提取第四个<tr>
元素的内容。
剥去封闭的<small>
标签,即可获得发布日期。
这一切都值得吗? ;)
答案 1 :(得分:-1)
在search.cpan.org上找到该模块。转到主页以获取最新版本的模块,例如Term::Size。此页面包含最新版本的发布日期,以及包含其他版本号和发布日期的下拉列表。