Perl模块发行版可以包含脚本吗
我正在考虑使用模块对脚本进行分组。我经常会遇到这样的情况:我有一个或多个使用某个模块的脚本 是否可以将脚本与模块打包在一起 对于如何实现这一点,是否有任何具体规定Perl模块发行版可以包含脚本吗,perl,module,Perl,Module,我正在考虑使用模块对脚本进行分组。我经常会遇到这样的情况:我有一个或多个使用某个模块的脚本 是否可以将脚本与模块打包在一起 对于如何实现这一点,是否有任何具体规定 感谢您的输入。您可以通过在Makefile.PL文件中包含EXE\u FILES指令,并在数组引用中提供脚本的相对路径,将脚本与模块一起包含。在下面的示例中,脚本位于模块目录顶层的bin/目录中。您不需要将文件放在类似于发行版的布局中,但这会有所帮助(见下文) 设置目录结构并在Makefile.PL中修改路径后,运行makeinsta
感谢您的输入。您可以通过在
Makefile.PL
文件中包含EXE\u FILES
指令,并在数组引用中提供脚本的相对路径,将脚本与模块一起包含。在下面的示例中,脚本位于模块目录顶层的bin/
目录中。您不需要将文件放在类似于发行版的布局中,但这会有所帮助(见下文)
设置目录结构并在Makefile.PL
中修改路径后,运行makeinstall
将随模块一起安装脚本
use ExtUtils::MakeMaker;
WriteMakefile(
NAME => 'My::Module',
VERSION_FROM => 'lib/My/Module.pm',
($] >= 5.005 ?
(ABSTRACT_FROM => 'lib/My/Module.pm',
AUTHOR => 'My Name <email.addr>') : ()),
LIBS => [],
EXE_FILES => [qw(bin/script1 bin/script2)],
DEFINE => '',
INC => '-I.',
PREREQ_PM => {},
);
现在,您可以将模块的代码复制到lib/My/module.pm
,创建一个bin/
目录,将脚本放入其中,将EXE\u FILES
指令添加到Makefile.PL
,您可以使用整套make
命令来制作、测试和安装模块和脚本,例如:
perl Makefile.PL
make
make test
make install
这是一个真实世界,我自己在CPAN上的一个发行版,包括一个捆绑的
pinmap
Perl脚本以及发行版的模块:您能提供一个examaple吗?重新表述,我希望在一个通过本地CPAN管理的模块目录中包含脚本,这样在部署模块时就可以执行了。不知道编译是否会反对这些脚本的存在,而且脚本位置不会在路径中。请参阅下面的答案。我展示的方法将把脚本安装到路径
中的某个位置,同时将模块安装到正确的位置。谢谢,我将尝试此方法。我们已经使用了模块启动器,所以这应该是我们程序的一个很好的扩展。
perl Makefile.PL
make
make test
make install