如何确保我的程序在不同平台上找到perl解释器?

D_K*_*D_K 2 perl

我的Perl脚本在几个操作系统下运行,包括unix和Win32.在每个操作系统上都有独特的Perl设置,其中perl解释器位于不同的目录下.

有没有办法在shebang线上指定解释器,如:

#!which perl
Run Code Online (Sandbox Code Playgroud)

bri*_*foy 6

使用常规CPAN工具安装脚本.在构建期间,它们使用您用于运行构建脚本的perl并将其插入到shebang行中.此外,您将确保您使用的perl已安装依赖项.

例如,您位于脚本的顶部:

#!perl

使用正常的模块分发过程(请参阅我的App :: PPI :: Dumper作为示例),

$ perl5.10.0 Makefile.PL

安装它,ExtUtils :: MakemakerModule :: Build使用你在构建脚本中使用的perl的路径重写shebang:

 #!/usr/local/perls/perl-5.10.0-rc2/bin/perl

 eval 'exec /usr/local/perls/perl-5.10.0-rc2/bin/perl  -S $0 ${1+"$@"}'
     if 0; # not running under some shell
Run Code Online (Sandbox Code Playgroud)

当您将脚本作为完整的发行版分发时,您可以免费获得所有工具链功能,例如自动安装依赖项.它让生活更轻松.