在已编译的 Perl 脚本上指定 -p 选项

Specify -p option on compiled Perl script

我在 Windows10 下使用 Strawberry Perl。我有一个 Perl 脚本,我总是使用 -p 选项调用它。

我想使用 PAR::Packer 中的 pp 程序将其编译为可执行文件 .exe。是否可以指定它应该使用 -p 选项执行?

无论是在编译命令pp命令上还是在生成的可执行文件的命令行上运行都是可以接受的。

我对 `PAR::Packer' 了解不多,但也许如果你给脚本一个 shebang 行

#! windows/ignores/this -p
...

PAR::Packer 可能会在可执行文件中遵守它。

如果没有,您可以随时*将 -p 使用脚本转换为常规脚本,如下所示:

perl -MO=Deparse -p myscript-p.pl > myscript-no-p.pl

* - 除非您的脚本具有 B::Deparse 无法正确解析的异常结构

-p 开关具有已定义的行为,其文档显示 equivalent code,因此只需编写您的程序以这种方式开始。

LINE:
  while (<>) {
      ...             # your program goes here
  } continue {
      print or die "-p destination: $!\n";
  }

(如果使用 Perl 5.22 或更新版本,请考虑使用 <<>> 而不是 <>。)