我是否需要在Windows上的Perl脚本中包含#!/ usr/bin/perl行?

15 perl

我刚刚在Windows上安装了ActivePerl,并开始学习Perl.在我正在阅读的书中,第一个代码示例如下:

#!/usr/bin/perl

use 5.010;

say "Hello, world!";
Run Code Online (Sandbox Code Playgroud)

因为我在Windows上,我想知道是否需要包含第一行?

我删除了第一行,没有它,程序运行正常.

这条线只用在Unix系统上吗?

eph*_*ent 14

如果您希望脚本可以移植到UNIX和Cygwin,请保留shebang行.即使在操作系统不使用它来确定如何运行文件的Windows上,Pe​​rl仍然会解析那里写的开关,例如

#!/usr/bin/perl -w
Run Code Online (Sandbox Code Playgroud)

默认情况下会打开警告(比如use warnings;全局).

  • [`perlrun`](http://p3rl.org/perlrun):"在解析行时,总是检查`#!`行的开关." (2认同)
  • 如果可移植性是一个问题,你应该使用`#!/ usr/bin/env perl`,因为perl并不总是安装在/ usr/bin中 (2认同)
  • @foampile您可以将其称为[解释器指令](http://wiki.bash-hackers.org/dict/terms/interpreter_directive),但它通常被称为两个初始字符#(hash)的shebang和!(砰). (2认同)

pax*_*blo 7

不,不是在这种特殊情况下.在类UNIX系统中,shell使用shebang行来定位脚本的可执行文件,脚本通常可以使用任何语言.

Windows倾向于为此目的使用文件扩展名关联.例如,它可以*.pl将要运行的所有文件与Active Perl可执行文件相关联.

Perl本身扫描该行以获得标志等,所以一般来说它并非完全没用.