在运行Perl程序(在Windows上)的路径中是否需要Perl bin目录?

在运行Perl程序(在Windows上)的路径中是否需要Perl bin目录?,windows,perl,strawberry-perl,path-variables,Windows,Perl,Strawberry Perl,Path Variables,传统上,我的PATH变量中只有C:\perl\bin,但由于版本冲突,我希望在C:\perl versionXY\bin位置保留不同的perl版本,并通过直接调用C:\perl-…\bin\perl.exe theScript.pl来执行我的perl脚本 这实际上是在一个自动化系统下运行的,我们已经直接为所有perl脚本调用了C:\perl\bin\perl.exe。(但是C:\perl\bin也在路径中。) 为了方便不同的Perl版本并行使用,我想从路径中删除C-Perl-bin,以确保我们不

传统上,我的PATH变量中只有
C:\perl\bin
,但由于版本冲突,我希望在
C:\perl versionXY\bin
位置保留不同的perl版本,并通过直接调用
C:\perl-…\bin\perl.exe theScript.pl
来执行我的perl脚本

这实际上是在一个自动化系统下运行的,我们已经直接为所有perl脚本调用了
C:\perl\bin\perl.exe
。(但是
C:\perl\bin
也在路径中。)

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

这样行吗?对于需要附加DLL文件的模块(比如LibXML,它需要perl的bin目录中的LibXML.DLL)呢


我将在并行版本中使用草莓Perl portable。(Who's readme file提到了一些路径设置,但没有提到哪个用于什么。)

我要提醒您,如果路径上没有Perl-bin目录,并且您执行的任何操作都会尝试调用位于bin-dir中的程序,而不提供显式路径(不好的做法,但这并不能阻止它发生)然后,您会遇到失败,这取决于该失败的处理方式,可能表现为微妙且难以调试的问题


所以我说,除非您有非常令人信服的理由不添加它(例如,it策略使得添加到PATH非常困难和烦人),否则请添加它。

如果所有DLL都与可执行文件位于同一目录中,它应该能正常工作。如果路径中只有一个Perl条目,那么DLL必须与可执行文件位于同一目录中(或者使用一些显式逻辑找到),因此您应该可以。可执行文件加载DLL时,首先搜索包含可执行文件的目录

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

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

注意使用
setlocal
命令,这样对路径的更改就不会导出回运行命令文件的命令行窗口。

您的意思是
C:\bin\perl
,因为这会使sense@johncorbett:为什么这更有意义?Windows不是unix,因此它没有c:\bin。C:\perl\bin非常有意义,哈哈,我想unix在我的脑海中是如此深入人心,即使在windows上,我使用的cygwinc\perl\bin也是完全正确的(ActiveState的perl的默认位置就是我们目前使用的位置)。好吧,如果我有两个perl版本,一个说是5.8,一个说是5.14,我只能有意义地将其中一个添加到(全局)路径对于另一个版本,这将是错误的路径。因此,将其添加到th(全局)路径似乎没有任何意义,不将其添加到路径中要比将其设置为上下文相关更容易。Unix系统上的一种常见做法是使用shell脚本包装可执行文件,这些脚本配置可执行文件将在其中运行的环境。有什么原因不能将perl程序的调用封装在批处理或powerShell脚本中?