Perl编程和分发
我对Perl编程非常陌生。我刚读完美洲驼的书。到目前为止,我已经用Bash编写了脚本,但我想尝试一下Perl,以及它比Bash脚本的好处 我正在创建一个脚本,它使用许多标准模块(例如Getopt)和一些非标准模块(例如 在某种程度上,我想分发我的Perl代码,我希望它能被那些不真正了解Perl或编程的人使用。显然,标准模块应该一直存在(我使用“use 5.010”在一定程度上保证了这一点),但非标准模块呢 我想有两种可能性: 1) 我是否应该告诉最终用户安装缺失的模块? 2) 我是否应该创建一个安装脚本来测试模块,如果模块不存在,则安装它们? 如果选择了选项2,我应该下载模块并安装它们吗?或者将它们与我的主代码一起分发? 我只是不知道这种事情的礼仪是什么 非常感谢您的建议,Perl编程和分发,perl,perl-module,Perl,Perl Module,我对Perl编程非常陌生。我刚读完美洲驼的书。到目前为止,我已经用Bash编写了脚本,但我想尝试一下Perl,以及它比Bash脚本的好处 我正在创建一个脚本,它使用许多标准模块(例如Getopt)和一些非标准模块(例如 在某种程度上,我想分发我的Perl代码,我希望它能被那些不真正了解Perl或编程的人使用。显然,标准模块应该一直存在(我使用“use 5.010”在一定程度上保证了这一点),但非标准模块呢 我想有两种可能性: 1) 我是否应该告诉最终用户安装缺失的模块? 2) 我是否应该创建一个
Ben您可以将它们转换为可执行文件。您可以尝试、或 如果您不想用prelc或perlapp编译它们,那么任何可能性都是可行的
- 你应该检查模块是否正确
提供Perl代码的版本
不要声明某些错误消息,如:
“在@INC中找不到数据/UUID.pm
(@INC包含:…)”。例如:
或eval { use Data::UUID; }; if( $@ ) { print "Data::UUID not found\n"; }
- 您可以尝试使用CPAN模块(或
unix上的cpan程序)。比如,你可以
try shell命令:
或者从perl脚本:cpan Data::UUID
#!/usr/bin/perl use CPAN; CPAN::install("Data::UUID");
Makefile.PL
中正确列出,然后某人只需编写cpan-YourApp::Name
即可获得您的应用程序及其所需的一切。或者,如果他们从CPAN以外的其他地方下载了你的应用程序,并且他们正在手动构建它,那么make
过程可以找到它们的依赖项(这就是为什么Module::AutoInstall
并没有完全失效,也不值得使用的原因)
对于Windows用户,在执行cpan YourApp::Name
步骤之前,唯一需要添加的是“安装草莓Perl”
你也可以选择捆绑(无论是PAR还是只是安装程序或存档,包括你的应用程序和所有必要的模块,也可能是代码> Perl 本身),但是这项技术有一个主要缺点:它意味着你不能使用任何XS代码,否则,您必须为希望应用程序支持的每个不同平台提供单独的软件包。CPAN路由没有遇到这个问题。
Downvote:这不起作用,因为use
在编译时运行。此外,正如霍布斯的回答所描述的,我们已经有了完美的依赖跟踪+安装工具链,不需要这种黑客行为。
#!/usr/bin/perl
use CPAN;
CPAN::install("Data::UUID");