我是否需要PATH中的Perl bin目录来运行perl程序(在Windows上)?

时间:2012-08-06 13:23:46

标签: windows perl strawberry-perl path-variables

传统上,我在PATH变量中只有C:\perl\bin,但是由于版本冲突,我想在位置C:\Perl-versionXY\bin保留不同的perl版本,只需通过直接调用{{}来执行我的Perl脚本1}}。

这实际上是在自动化系统下运行的,我们已经为所有perl脚本直接调用 C:\Perl-...\bin\perl.exe theScript.pl。 (但C:\perl\bin\perl.exe 在PATH中。)

为了方便不同的Perl版本,我想从PATH 中删除C-perl-bin,以确保我们从未看到任何与Perl相关的副作用路径设置。

这应该有效吗?那些需要额外DLL文件的模块(比如LibXML,需要在perl的bin目录中使用LibXML.dll)?

我将使用Strawberry Perl便携式并排版本。 (谁的自述文件提到了一些PATH设置,但未提及哪些用于什么。)

2 个答案:

答案 0 :(得分:1)

如果所有DLL与可执行文件位于同一目录中,则它应该正常工作。如果路径中只有一个Perl条目,则DLL必须与可执行文件位于同一目录中(或者使用某些显式逻辑找到),因此您应该没问题。当可执行文件加载DLL时,搜索的第一个位置是包含可执行文件的目录。

如果遇到麻烦,可以选择为每个版本创建一个命令文件。您可以给出这些不同的名称,例如perl58.cmd,perl514.cmd等,将它们全部放在一个目录中,并将该目录放在路径上。在每个命令文件中,将相应的Perl目录添加到路径中,然后使用命令行参数启动Perl:

setlocal
PATH=c:\perl58\bin;%PATH%
perl %*

请注意使用setlocal命令,以便不会将对路径的更改导回到运行命令文件的命令行窗口。

答案 1 :(得分:0)

我会提醒您,如果您没有PATH上的Perl bin目录,并且您执行的任何操作都会尝试调用bin目录中的程序而不提供显式路径(不好的做法,但不会停止它发生了失败,并且取决于如何处理失败,可能会出现微妙且难以调试的问题。

所以我要说,除非你有一个非常令人信服的理由不添加它(例如IT策略使得添加到PATH变得非常困难和烦人),然后添加它。