我在 Win7 x64 上运行 ActivePerl 5.8.8 build 822。我们正在开发一个大约 60% 的 C++、15% 的 perl 等的项目。Perl 被大量用于将零碎和各种小型实用程序应用程序链接在一起,以创建和打包我们的最终数据。因此,例如,我们的 VS2005 解决方案具有构建后事件以使用构建后 perl 脚本创建到 DLL 的硬链接,该脚本位于我们开发驱动器上的某个位置(它是 PATH env var 的一部分)。
我很快发现,如果没有在 postbuild.pl 脚本调用前面显式放置“perl”来调用解释器,它就不会接受命令行参数。我只是通过转到 cmd 窗口并使用“hello world”样式的 perl 脚本来进一步测试这一点。当我说“bleh.pl arg1 arg2”时,没有传入命令行参数。但是当我说“perl bleh.pl arg1 arg2”时,我得到了命令行参数。
当这个失败发生时,perl 读取零个命令行参数,并且@ARGV 变量为空或 null(不管这个疯狂的语言做什么)。所以他们根本没有通过。
这是一个问题,因为对 perl 脚本的调用有数百甚至数千次,我担心它们的行为不正确,并且认为我应该明确地为每个 .pl 脚本调用加上 perl 前缀是不合理的,更不用说我们是使用版本控制,我不想提交所有这些垃圾更改,也不想在我的存储中管理它们。
PERL env var 存在并指向 perl 二进制文件所在的文件夹。以及 PATHEXT 中的 .PL 用于 perl 脚本。同样,我的 PATH 包含用于访问脚本和 perl 的文件夹条目。
任何有关如何解决这个问题的帮助将不胜感激!此外,当我安装 ActivePerl 时(我已经做了很多次试图弄清楚这一点)。我允许它更改我的路径并在 Windows 中关联文件扩展名,您认为这将是解决方案。
谢谢!