为什么我的CPAN分布不是由PAUSE索引的?

时间:2016-10-02 20:51:41

标签: perl indexing cpan

我已将stasis发布内容上传到PAUSE,但它不在index中。

我认为这是因为它没有包,所以我在v0.04中向stasis script添加了一个包声明,如下所示:

#!/usr/bin/env perl
package stasis;
package main;
...

但它仍然没有编入索引。

无论如何都要将此分布编入索引,而不涉及创建样板模块文件? (例如,将lib/stasis.pm添加到发行版中。

2 个答案:

答案 0 :(得分:7)

我相信CPAN不会为脚本编制索引。

IMO你最好的选择是制作一个模块,允许以编程方式执行你的脚本所做的事情(并使脚本使用它)。

你可以放入一个虚假的模块,或者让它认为你的脚本是一个模块(我想在provides中列出它),但如果我是你,我也不会。

答案 1 :(得分:2)

因为package语句不在*.pm文件中。

PAUSE索引器为open source。解压缩有点复杂,但是在分发中提取包名称的正则表达式是PAUSE::pmfile::packages_per_pmfile,这是一个仅用于处理*.pm文件的方法和包。

PAUSE::dist::_index_by_meta方法提供了通过元文件中的provides关键字声明包的替代方法。