更优先 - Shebang line或perl命令?

时间:2014-12-16 11:43:01

标签: perl scripting shebang

我有多个Perl脚本,其中shebang行已过时。多数民众赞成,shebang指向旧版本的Perl。

旧的每条道路:

#!/data/oracle10.0/perl/bin/perl

新版本的Perl位于

#!/data/**oracle11.0**/perl/bin/perl

我已将perl命令软链接到新版perl的位置。

perl -> /data/oracle11.0/perl/bin/perl

现在,shebang指向旧版本和perl命令指向更新版本。

所以,当我做perl sample.pl时,shebang会被忽略。

我写了一些示例脚本来查看。当我使用perl命令时,似乎忽略了shebang行。但是我记得perl的旧版本不是这种情况(Shebang被认为超过了perl命令)。

所以我的问题是,新版本的perl(5.10)和旧版本(5.8)对于shebang线有不同的行为吗?如果传递perl命令,新版本的Perl会忽略shebang行吗?

1 个答案:

答案 0 :(得分:4)

当您运行perl myscript.pl时,这会启动perl二进制文件并将其作为输入myscript.pl,然后运行它。在这种情况下,无论Perl版本如何,始终都会从perl获取第一个$PATH二进制文件。正如mpapec在评论中所说,您可以使用perl命令确定which perl这是什么。

当您运行./myscript.pl时,您的shell会查找一个shebang行,如果存在,它将执行shebang中列出的程序并将其作为输入提供给文件内容。 (如果没有,shell本身会尝试处理文件的内容。)在这种情况下,无论Perl版本如何,总是在shebang的路径上获取perl。< / p>

这是基本的* nix行为,并且在Perl版本之间没有变化(因为它首先不由perl管理)。