其中哪些更好或更快用作Perl脚本的shebang行?
#! perl #! perl.exe #! fullpath/perl(/perl.exe) #! partialpath/perl(/perl.exe)
并且,当使用#!perl时,当它在一个特定的系统上工作时,我如何在脚本中找到我使用的perl解释器,所以我可以把那个到shebang行?
并且,如果使用/ path / path / perl,是“*”还是“…”允许用于文件夹?
解决方法
如果你必须硬编码#!,使用#!/ usr / bin / env perl。为什么?你想要的是Perl程序运行与用户的首选Perl。这将是他们PATH中的第一个。 #!perl不做我的意思,它不搜索用户的PATH,#!/ usr / bin / env perl是如何拉断的。 / usr / bin / env将始终存在于Unix系统上。
如果用户正在使用Windows,正如其他人指出的,这没关系。 Windows不使用#!它使用文件扩展名关联。确保你的程序被称为foo.pl或某事,它会工作。但包括#!无论如何,一些实用程序和编辑器使用它。
如果你运送代码,让安装程序照顾它。 MakeMaker / Makefile.PL和Module :: Build / Build.PL都会改变你的#!线匹配用户用来安装的perl。他们会为你照顾这个问题。
如果要为自己的生产使用安装代码,则应使用perl的特定副本的完整路径。哪个版本的perl?一个特定于您的项目。这是否意味着你需要为每个项目编译perl?不,你可以做一个符号链接。项目foo可能有/usr/local/bin / fooperl指向/usr/bin/perl5.18。使用#!/usr/local/bin / fooperl。现在如果你决定升级perl,你可以通过改变符号链接在每个项目。