在Windows中运行perl不需要#!/ usr / bin / perl,但是

时间:2013-02-12 18:33:08

标签: windows perl

关于使用

的类似问题
#! /usr/bin/perl

已经回答了。但我认为我的问题略有不同,尽管可能仍然与知情人士相似,因为我对计算缺乏了解。

我的Windows上没有UNIX,所以无法直接测试以下内容,但是虽然我不需要使用shebang系列在Windows下运行Perl,而hello.pl中的shebang行,我仍然可以如果我从

移动,请不要运行该文件
c:\Users\XYZ\Desktop\BegPerl

c:\Users\XYZ\Desktop

我的脚本存储在

c:\Users\XYZ\Desktop\BegPerl

我的perl文件夹存储在

c:\Strawberry\perl\bin\perl.exe

所以我的问题是:

  1. Windows如何找到“perl.exe”?
  2. 为什么Windows只能在perl hello.plc:\Users\XYZ\Desktop\BegPerl但在c:\Users\XYZ\Desktop下不是{{1}}时才会找到hello.pl,即使包含了shebang行?
  3. 我得到的关于shebang线“目的”的答案是

      

    用于类UNIX系统以查找脚本的可执行文件

    所以,我想我的两个问题的答案可能与类UNIX系统和Windows之间的区别有关。

2 个答案:

答案 0 :(得分:6)

通过在操作系统注册表中将pl文件扩展名与perl.exe相关联。 perl.exe所在的目录应位于系统PATH

两者都应该在安装perl时发生,但如果不是,那就是你需要做的。

答案 1 :(得分:1)

  1. dir/perl script.pl/dir/perl script.pl

    • Unix:操作系统将在指定路径中搜索perl。不会使用shebang线。*
    • Win:操作系统将在指定的路径中搜索perl。不会使用shebang线。*

  2. perl script.pl

    • Unix:操作系统将在PATH env var的路径中搜索perl。不会使用shebang线。*
    • Win:操作系统将搜索相对于当前目录和PATH env var中路径的perl。不会使用shebang线。*

  3. script.pl

    • Unix:操作系统将查找shebang行,并执行指示的程序和参数,后跟脚本名称和命令行参数。
    • Win:操作系统将查找该扩展名文件的文件关联,并执行指定的程序和参数。 %1将替换为文件名。 %*将替换为命令行参数。
  4. * - 系统不会使用shebang行。如果不使用的话,Perl实际上会自行解释shebang系列。即使没有使用shebang线,这也允许-w生效。