我曾经删除过一次我的ActivePerl,所有安装的模块都丢失了。所以现在我对这类问题非常小心。由于某种原因,我现在想使用Strawberry Perl,同时保留 ActiveState 的 ActivePerl。
这会导致兼容性问题吗?可取吗?
我曾经删除过一次我的ActivePerl,所有安装的模块都丢失了。所以现在我对这类问题非常小心。由于某种原因,我现在想使用Strawberry Perl,同时保留 ActiveState 的 ActivePerl。
这会导致兼容性问题吗?可取吗?
这不会是一个问题,因为两个 Perl 实现都会查看不同的模块目录。也就是说,@INC
条目将不同。
我将ActivePerl和Strawberry Perl都安装在我的 Windows 7 Pro 实例上。我的 PATH 变量顺序决定了我的 Perl 偏好。例如,为了使用 ActivePerl,我将 PATH 设置为如下所示:
C:\Perl64\bin;C:\strawberry\perl\bin
您始终可以使用 shebang 在脚本中覆盖它:
#!C:\strawberry\perl\bin\perl
您可以一次使用两个(许多)不同的 Perl 版本。
设置您的 PATH 变量以包含您的主要 Perl 路径(perl.exe 的路径),以确保您在使用perl script.pl
.
您可以使用Perlbrew(或其他模块)来帮助在您的计算机上保留多个 Perl 安装。
它在 Windows 上可用: http: //code.activestate.com/ppm/App-perlbrew/
我为此找到了另一种解决方案。您可以将 Perl 代码嵌入到 Windows 批处理文件中。这样,您可以在执行 Perl 脚本或包含模块路径之前设置环境变量。
@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