我正在尝试构建一个perl包(模块+脚本)。
我的Makefile.PL包含以下内容以包含我的脚本
EXE_FILES => [
'bin/somescript1',
],
但是在安装脚本之后,它会将以下内容添加到已安装脚本的开头。
eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
if 0; # not running under some shell
为什么会这样做,我可以不包含它吗?
答案 0 :(得分:1)
你不应该担心这些线。这是一种使用Perl和shell运行脚本的方法,使其超级便携。
答案 1 :(得分:1)
当ExtUtils :: Makemaker安装脚本时,它会修改为shebang行以使用您用于构建分发的perl
的路径。这样,当您调用脚本时,它使用您用于安装依赖项的perl
。
此外,它还添加了exec
行。如果由于某种原因,系统在shell中而不是perl
启动您的程序,则exec
会将其切换为perl
。
不管它。这只会对你有所帮助。
但是,如果要覆盖它,则必须覆盖安装程序的Makemaker部分。如果你想切断你的手臂,你必须自己找出如何做到这一点。这一切都在Makemaker文档中。
答案 2 :(得分:0)
如果将shebang行设置为#!/ usr / bin / env perl,则可以利用ExtUtils :: MM_Unix中的错误,并且在安装时不会添加eval行。如果安装主机没有工作/ usr / bin / env
,这将中断