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

5ssjco0h  于 2023-02-09  发布在  Perl
关注(0)|答案(2)|浏览(143)

我今天在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覆盖系统的默认版本。
我将不胜感激你的详细答案(与文件名和目录,他们所在的位置),如果其中一个是要改变,以实现拯救。
谢谢!

9rygscc1

9rygscc11#

问题是:是否可以将脚本中使用的目录从#!/usr/local/ActivePerl5.20.2/bin/perl更改为简单熟悉的#!/usr/bin/perl,并保持在ActivePerl下运行,而不是内置。
不要尝试。那样做是诅咒,而不是救赎。指定处理脚本的特定解释器的能力是一个重要的特性。
相反,将CGI脚本打包为一个简单的CPAN模块,然后使用熟悉的

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

shebang行将自动调整以反映用于构建和安装软件包的perl

cwxwcias

cwxwcias2#

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

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

#! /usr/bin/perl

请指定以下内容:

#! /usr/bin/env perl

这将在您的$PATH中找到第一个可执行的Perl解释器,然后使用它来执行Perl脚本。这样,您不必更改程序,只需更改$PATH变量。
下一次,请看一下PerlBrew,它可以安装不同版本的Perl,PerlBrew允许您安装多个版本的Perl,所有这些都在用户控制之下,并允许您选择要使用的Perl版本。
我还建议把/usr/local/bin作为$PATH的第一个条目,然后把你想运行的可执行文件链接到那个目录,你可以用类似下面的代码来创建链接:

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之前,因为我想能够 * 覆盖 * 系统的默认版本。

相关问题