如何使用 ActivePerl 5.20 的默认路径 Mac OS X (/usr/bin/perl) 而不是 /usr/local/ActivePerl...?

How to use default path for ActivePerl 5.20 Mac OS X (/usr/bin/perl) instead of /usr/local/ActivePerl...?

我今天在 Mac OS X 10.9.5 上安装了 ActivePerl 5.20.2 在终端中检查 perl 的版本 (perl -v) 我看到 5.20.2 所以一切似乎都还好。但.. 当我启动我的 CGI 脚本时,该脚本是 运行 内置的 perl(即 5.16)(如果使用 #!/usr/bin/perl)。 如果我使用 #!/usr/local/ActivePerl5.20.2/bin/perl 那么它会在需要的 5.20.2 下运行。

问题是:是否可以通过某种方式将我的脚本中使用的目录从 #!/usr/local/ActivePerl5.20.2/bin/perl 更改为简单而熟悉的 #!/usr/bin/perl 将 运行 保留在 ActivePerl 下而不是构建英寸

我需要用新的 ActivePerl 覆盖系统的默认版本。

如果要更改以实施救赎,我将不胜感激您详细的回答(包括文件名和它们所在的目录)。

谢谢!

The question is: is it somehow possible to change the directory for using in my scripts from #!/usr/local/ActivePerl5.20.2/bin/perl to simple and familiar #!/usr/bin/perl keeping running under ActivePerl instead of built in.

甚至不要尝试。那就是诅咒,而不是救赎。指定将处理脚本的特定解释器的能力是一项重要功能。

相反,将您的 CGI 脚本打包为一个简单的 CPAN 模块。然后,使用熟悉的

安装它
$ /usr/local/ActivePerl5.20.2/bin/perl Makefile.PL
$ make install

例行公事。 shebang 行将自动调整以反映用于构建和安装包的 perl

首先,不要在脚本中指定 Perl 解释器的特定路径:

#! /usr/local/ActivePerl5.20.2/bin/perl

#! /usr/bin/perl

指定这个:

#! /usr/bin/env perl

这将在您的 $PATH 中找到第一个可执行的 Perl 解释器,然后使用它来执行您的 Perl 脚本。这样,您不必更改程序,只需更改 $PATH 变量即可。

下次,请查看 PerlBrew 以安装不同版本的 Perl。 PerlBrew 将允许您在用户控制下安装多个版本的 Perl,并让您 select 您想要使用哪个版本的 Perl。

我还建议将 /usr/local/bin 作为 $PATH 中的第一个条目。然后,link 您想要 运行 那个目录的可执行文件。您可以使用类似这样的东西来创建您的 links:

for file in $/usr/local/ActivePerl5.20.2/bin/*
do
    basename=$(basename $file)
    ln -s "$file" "/usr/local/bin/$basename"
done

这样,您要执行的所有程序都在同一个目录中,这使得设置 $PATH 变得非常容易。我什至把 /usr/local/bin 放在 /usr/bin/bin 之前,因为我希望能够 覆盖 系统的默认版本。