3

关于使用的类似问题

#! /usr/bin/perl

已得到答复。但我认为我有一个稍微不同的问题,尽管鉴于我对计算缺乏了解,可能仍然与知情人士相似。

我的 Windows 上没有 UNIX,因此无法直接测试以下内容,但是虽然我在 Windows 下运行 Perl 确实不需要 shebang 行,但在 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 只能在我键入时找到 hello.pl perl hello.plc:\Users\XYZ\Desktop\BegPerlc:\Users\XYZ\Desktop即使包含 shebang 行也不能找到?

我得到的关于shebang线的“目的”的答案是

用于类 UNIX 系统来定位脚本的可执行文件

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

4

2 回答 2

6

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

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

于 2013-02-12T18:36:50.203 回答
1
  1. dir/perl script.pl或者/dir/perl script.pl

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

  2. perl script.pl

    • perlUnix:操作系统将在 PATH 环境变量中的路径进行搜索。不会使用 shebang 线。*
    • Win:操作系统将搜索perl相对于当前目录和 PATH 环境变量中的路径。不会使用 shebang 线。*

  3. script.pl

    • Unix:操作系统将寻找 shebang 行,并执行指定的程序和参数,后跟脚本名称和命令行参数。
    • Win:操作系统将查找具有该扩展名的文件的文件关联,并执行指定的程序和参数。%1将替换为文件名。%*将替换为命令行参数。

* —系统不会使用 shebang 线路。如果没有使用,Perl 实际上会对 shebang 行进行自己的解释。即使没有使用 shebang 线,这也允许-w那里生效。

于 2013-02-12T20:16:20.447 回答