make为我的脚本添加了一个'exec'行

时间:2011-07-22 20:25:05

标签: perl cpan

我正在尝试构建一个perl包(模块+脚本)。

我的Makefile.PL包含以下内容以包含我的脚本

EXE_FILES => [
               'bin/somescript1',
             ],

但是在安装脚本之后,它会将以下内容添加到已安装脚本的开头。

eval 'exec /usr/bin/perl  -S $0 ${1+"$@"}'
    if 0; # not running under some shell

为什么会这样做,我可以不包含它吗?

3 个答案:

答案 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

,这将中断