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

Mar*_* Ba 5 windows perl path-variables strawberry-perl

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

这实际上是在自动化系统下运行的,我们已经直接调用 C:\perl\bin\perl.exe所有perl脚本.(不过C:\perl\bin在PATH).

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

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

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

Har*_*ton 1

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

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

setlocal
PATH=c:\perl58\bin;%PATH%
perl %*
Run Code Online (Sandbox Code Playgroud)

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