传统上,我在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设置,但未提及哪些用于什么。)
答案 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变得非常困难和烦人),然后添加它。