获取CPAN中可用包名称的最全面列表的最简单方法是?

时间:2017-02-24 13:57:46

标签: perl cpan

假设作为一个私有项目,我已经实现了一个Perl软件包,并对其进行了正式和日常使用的测试。我发现这个软件包非常有用且足够坚固,可以将其提交给CPAN。

到目前为止,由于软件包是一个私有项目,我并没有太担心软件包的名称,但是现在我想提交给CPAN,但我希望软件包的名称能够很好地适应包装名称的生态已经在CPAN中。

为了为我的包找到合适的“CPAN名称”,我必须检查所有这些包名 1 的综合列表。

  

在CPAN中获取这些包名称的最简单方法是什么?

ObPedantry

(如果上面的问题已经足够清楚了,你可以放心地忽略下面的内容。)

我认为我不能通过“包名”给出技术上正确的正式定义,所以至少要给出一个“操作定义”。

例如,如果是单行

$ perl -MFoo::Bar::Baz -c -e 1

开头的错误失败
Can't locate Foo/Bar/Baz.pm in @INC ...

...,但是在从CPAN安装了一些发行版之后,同样的oneliner成功了

-e syntax OK

...然后我会说Foo::Bar::Baz是CPAN中的包裹名称”

(我们可以分开包装/模块的区别,并考虑区别重要的情况,但请不要。)

此外,如果在检查列表后这个问题询问我发现,一方面,CPAN中实际上有许多以前缀Foo::Bar::开头的着名包名,另一方面,那里没有(或可忽略的少数)以前缀Fubar::开头,那么这就足以让我将Fubar::Frobozz包的名称更改为Foo::Bar::Frobozz,然后再将其提交给public class ReadOnlyField<T> { private bool _frozen; private T _value; public T Value { get { return _value; } set { if (_frozen) throw new InvalidOperationException(); _value = value; } } public void Freeze() { _frozen = true; } } CPAN。

1 当然,在检查了这样的列表之后,我可能会发现我的软件包没有添加足够的新功能,相对于CPAN中已有的功能,以保证我的软件包在提交给CPAN之后所有

4 个答案:

答案 0 :(得分:4)

PAUSE::Packages可以执行您想要的操作,但您可能希望使用this list,但http://prepan.org/可以在提交给cpan之前提供建议/审核,当然还要阅读on the naming of modules首先。

答案 1 :(得分:4)

你确定这是你想要的东西吗?在撰写本文时,CPAN上有33,623个发行版。在$('.vid-close').on('click', function () { $('#vidlightbox').hide(); if (videosource == "youtube") { $('#vidcontent').empty(); att.entbus.ytPlayer.stopAll(); } else { if (jwplayer('jwPlayer') != null) { try { jwplayer('jwPlayer').remove(); } catch(err) {} } } }); 范围内,您可以输入

cpan

发行版的cpan> d /./ 后跟一个与您感兴趣的名称匹配的正则表达式模式

如果你真的对感兴趣 - 并且发行版可能包含多个包名 - 你需要

d

其中cpan> m/./ 用于模块。其中有163,136个,这意味着每个分发平均有四到五个包,生成列表需要m几分钟。 (对不起,我没有监控确切的时间。)

答案 2 :(得分:4)

如果您之前已经运行过cpan,那么您已经在<cpan-home>/sources/modules/02packages.details.txt.gz下下载了一个综合的包和分发列表。

任何CPAN镜像都有新的副本,例如: http://www.cpan.org/modules/02packages.details.txt.gz

答案 3 :(得分:0)

您可以使用MetaCPAN::Client

我发现这个article给出了使用这个模块的想法。

#!/usr/bin/perl 
use strict; use warnings; use MetaCPAN::Client;
my $mcpan  = MetaCPAN::Client->new();
my $release_results = $mcpan->release({ status => 'latest' } );
while ( my $release = $release_results->next ) {
    printf "%s v%s\n", $release->distribution, $release->version;
}

目前,这给了我 32601 这样的结果:

Proc-tored v0.11
Locale-Utils-PlaceholderBabelFish v0.004
Perinci-To-Doc v0.83
Mojolicious-Plugin-Qooxdoo v0.905
App-cdnget v0.05
Baal-Parser v0.01
Acme-DoOrDie v0.001
Net-Shadowsocks v0.9.0
MetaCPAN-Client v2.006000

此模块还提供有关发布,模块,作者和文件&amp;的信息。使用 Elasticsearch

它还会定期更新每个MetaCPAN API更改。