查找某个模块版本的发布

时间:2010-11-12 16:17:05

标签: perl date module version release

使用

use Term::Size;
say $Term::Size::VERSION;

我可以找到该模块的版本 脚本怎么能找出这个模块版本的发布日期?

2 个答案:

答案 0 :(得分:3)

  1. 构建模块搜索的网址,如下所示:“http://search.cpan.org/perldoc?Term::Size".

  2. 使用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。

    遗憾的是,在您的示例中,这一重要区别并不明显,因为您只是选择了一个与分发名称共享其名称的模块

  3. 通过使用您自己的(例如0.203)替换您从重定向(0.207)自动获得的“最新”版本来更改该URL。得到http://search.cpan.org/~ferreira/Term-Size-0.203/Size.pm

  4. 更改该网址以删除特定于模块的后缀,例如“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/">&#65;&#100;&#114;&#105;&#97;&#110;&#111; &#70;&#101;&#114;&#114;&#101;&#105;&#114;&#97;</a> &gt;
     <a href="/~ferreira/Term-Size-0.203/">&#84;&#101;&#114;&#109;-&#83;&#105;&#122;&#101;-0.203</a> &gt;
      &#84;&#101;&#114;&#109;::&#83;&#105;&#122;&#101;
    </div>
    
  5. 现在您拥有适用于您的版本(http://search.cpan.org/~ferreira/Term-Size-0.203/)的发布页面的网址

  6. 通过WWW :: Mechanize检索正确版本的发布页面,并通过HTML :: TreeParser或任何其他喜欢的HTML解析器模块或 gasp 正则表达式进行解析。您正在寻找的是一组HTML,如下所示:

    <table>
     <tr>
      <td class=label>This Release</td>
      <td class=cell>&#84;&#101;&#114;&#109;-&#83;&#105;&#122;&#101;-0.203</td>
      <td><small>&nbsp;[<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>]&nbsp;</small></td>
    
    
      <td><small>21 May 2006</small>
      </td>
     </tr>
    

    从HTML开始,您需要从第一个单元格包含“此版本”一词的行<td>中提取第四个<tr>元素的内容。

    剥去封闭的<small>标签,即可获得发布日期。

  7. 这一切都值得吗? ;)

答案 1 :(得分:-1)

search.cpan.org上找到该模块。转到主页以获取最新版本的模块,例如Term::Size。此页面包含最新版本的发布日期,以及包含其他版本号和发布日期的下拉列表。