9

我曾经删除过一次我的ActivePerl,所有安装的模块都丢失了。所以现在我对这类问题非常小心。由于某种原因,我现在想使用Strawberry Perl,同时保留 ActiveState 的 ActivePerl。

这会导致兼容性问题吗?可取吗?

4

4 回答 4

5

这不会是一个问题,因为两个 Perl 实现都会查看不同的模块目录。也就是说,@INC条目将不同。

于 2012-04-02T08:43:16.213 回答
3

我将ActivePerlStrawberry Perl都安装在我的 Windows 7 Pro 实例上。我的 PATH 变量顺序决定了我的 Perl 偏好。例如,为了使用 ActivePerl,我将 PATH 设置为如下所示:

C:\Perl64\bin;C:\strawberry\perl\bin

您始终可以使用 shebang 在脚本中覆盖它:

#!C:\strawberry\perl\bin\perl
于 2012-04-02T08:50:46.333 回答
2

您可以一次使用两个(许多)不同的 Perl 版本。

设置您的 PATH 变量以包含您的主要 Perl 路径(perl.exe 的路径),以确保您在使用perl script.pl.

您可以使用Perlbrew(或其他模块)来帮助在您的计算机上保留多个 Perl 安装。

它在 Windows 上可用: http: //code.activestate.com/ppm/App-perlbrew/

于 2012-04-02T08:41:57.357 回答
0

我为此找到了另一种解决方案。您可以将 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
于 2012-04-11T08:40:01.883 回答