假设作为一个私有项目,我已经实现了一个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之后所有
答案 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更改。