问题标签 [pp-perl-par-packager]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
123 浏览

perl - 如何调试使用 perl PAR 打包程序 (pp) 创建的可执行文件?

我使用PAR 打包程序 (pp)foo.exe从 Perl 脚本创建了一个 Windows 可执行文件foo.pl。Perl 脚本运行良好 ( perl foo.pl <arguments>)。可执行文件也可以运行 ( foo.exe <arguments>),但不会产生与 Perl 脚本相同的结果。我想调试可执行文件运行的 perl 脚本,以找出差异来自何处。我怎么做?换句话说,我如何将 a 传递给执行时开始-d的那个?perl.exefoo.exe

附录 2020-05-26

使用“Process Explorer”我找到了最终被执行的应用程序。这是%TEMP%\par-<ID1>\cache-<ID2>\foo.exe, where<ID1><ID2>是短和长的十六进制字符串。我原本希望找到...\perl.exe foo.pl,然后我可以将我-d的注入命令行。

在该文件夹中运行foo.exe会产生错误“无法在 @INC 中找到 PAR.pm”。

同一个文件夹还包含许多 *.pm、*.dll(包括 perl528.dll)和一些 *.pl 文件,其中 *.pl 和 *.pm 文件的名称是十六进制短字符串。其中一个 *.pl 文件(进程的 PAR_0 环境变量中提到的那个)结果与 具有相同的内容foo.pl,并带有以下两行前缀:

如果我使用该 perl 脚本的名称perl -Iinc/lib <ID>.pl在该文件夹中运行<ID>.pl,那么它会产生所需的结果,即不会遇到 exe 遇到的问题。我希望该文件夹中的 perl528.dll 和其他 dll 是构成 Perl 的位,但不知道如何调用它们。该foo.exe文件夹中的文件大小只有 78 kB,因此除了让其他位完成工作外,它不能做更多的事情。

0 投票
1 回答
91 浏览

perl - PERL 在 PAR 之后不运行脚本

脚本在 http://localhost/perl.pl 上正常运行

PERL 脚本内容

当我通过浏览器运行脚本时 http://localhost/xx.pl

内部服务器错误

服务器遇到内部错误或配置错误,无法完成您的请求。