在许多perl脚本中(特别是在着名的CPAN发行版中),我找到了以下代码:
eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}'
if 0; # not running under some shell
Run Code Online (Sandbox Code Playgroud)
我想知道它是为了什么?
谢谢.
有些系统无法识别#!/usr/bin/perl脚本开头的行,因此尝试在这样的系统上按名称调用Perl程序只会将脚本传递给shell.为了解决这个问题,可移植的Perl程序以一行开头,当由标准POSIX shell解释时,会导致脚本被传递给它perl(1).的if 0原因线时Perl本身运行被忽略,并且将其放置在单独的行导致炮弹把它当作一个单独的命令,就在运行eval 'exec /usr/bin/perl -w -S $0 ${1+"$@"}',只要它是阅读.