Perl/CPAN 如何分发脚本而不是模块

标签 perl cpan

我刚刚发布了我的第一个 perl 程序 unifdef+ (code::unifdefplus, v0.5.3),但我不确定我是否做得正确。该程序分为两部分——一个脚本(script/unifdef+.pl)和一个模块(lib/unifdefplus.pm)。该脚本基本上是模块的包装器。这应该充当命令行实用程序(这实际上是我想要发布的)。

我包含的 README 文件记录了脚本,而不是模块。 CPAN 似乎也从模块而不是脚本中获取版本(目前尚未定义)。

所以,我的问题是:如果我希望它被索引为脚本而不是模块,我需要做任何不同的事情吗?另外,我认为我也应该为模块编写一些文档——在这种情况下,我假设它应该是 lib 目录中的 README 文件?

再次道歉,但这是我第一次这样做,我想确保我做对了。

最佳答案

马上开始,请阅读 On the naming of modules来自 PAUSE 管理员。如果您仍有疑问或不确定,请联系 modules <at> perl.org .

最简单的方法是使用 App:: 中的名称。命名空间,例如 App::MyMod .

通常,我会将脚本和模块文档保存在它们单独的文件中,但靠近模块文档的顶部,清楚地链接到脚本的文档,并声明大多数用户都希望阅读它以供正常使用。

建立 README来自脚本文档:

pod2readme bin/my_script

同样,如果您改变主意并想要 README改为引用模块:
pod2readme lib/App/MyMod.pm

假设您使用 ExtUtils::MakeMaker对于您的构建,您可以通过添加指令来确保安装脚本:
EXE_FILES => [
    'bin/my_script'
],

当然,您的脚本在顶层 bin您的发行版目录。其他构建系统也有类似的指令。

关于Perl/CPAN 如何分发脚本而不是模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42471050/

相关文章:

Perl:将值列表声明为常量

perl - 在 Perl 中读取另一个包符号表

svn - 我通过 CPAN 升级了 SVN::Core,现在 git-svn 无法识别 http://URLs

perl - 安装后在@INC 中找不到 XML/Simple.pm

mysql - bugzilla: install-module.pl GD 返回显示错误

windows - 在 Perl 中读取 Windows 注册表

perl - 从磁盘读取 10 GB 文件的最快方法是什么?

perl - 为什么使用以下脚本时输出不同?

perl - 需要与 CPAN 发行版一起安装的非 Perl 文件?

perl - Perl 工具链中 Meta 2 支持的状态如何?