我不是Perl的新手,但这个问题让我很困惑。
我曾经删除过一次ActiveState Perl,并且所有已安装的模块都丢失了。所以现在我对这类问题非常小心。由于某种原因,我现在想要使用Strawberry Perl,同时保持ActiveState Perl的使用。
这是否会导致兼容性问题?这是可取的吗?
答案 0 :(得分:5)
这不会是一个问题,因为perl
将查看模块的不同目录。也就是说,@INC
条目将是不同的。
答案 1 :(得分:3)
我在Win7Pro上安装了ActiveState和Strawberry。我的PATH变量顺序决定了我的Perl偏好。例如,对于使用ActiveState,我将PATH设置为如下所示:
C:\Perl64\bin;C:\strawberry\perl\bin
您始终可以使用shebang在脚本中覆盖此内容:
#!C:\strawberry\perl\bin\perl
希望这有帮助。
答案 2 :(得分:2)
您可以一次使用两个(多个)不同的perl版本。
设置PATH变量以包含主perl路径(perl.exe的路径),以确保在使用perl script.pl启动程序时运行正确的perl。
您可以使用PerlBrew:http://perlbrew.pl/(或其他模块)来帮助在您的计算机中保留多个perl安装。
可在Windows上使用:http://code.activestate.com/ppm/App-perlbrew/
此致
答案 3 :(得分:0)
我找到了另一个解决方案。您可以将perl代码嵌入到Windows批处理文件中。这样,您可以在执行perl脚本之前设置env变量,或者包含模块路径。
@echo off
cd %TEMP%
set perl_bindir=C:\strawberry\perl\bin
set module_dir=C:\my_perl_modules
set path=%perl_bindir%;%path%
echo Launching %0 perl script
%perl_bindir%\perl.exe -I %module_dir% -x -S %0 %*
goto endofperl
#!perl -w
use strict;
print "Hello World\n";
__END__
:endofperl