我今天在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覆盖系统的默认版本。
我将不胜感激你的详细答案(与文件名和目录,他们所在的位置),如果其中一个是要改变,以实现拯救。
谢谢!
2条答案
按热度按时间9rygscc11#
问题是:是否可以将脚本中使用的目录从
#!/usr/local/ActivePerl5.20.2/bin/perl
更改为简单熟悉的#!/usr/bin/perl
,并保持在ActivePerl下运行,而不是内置。不要尝试。那样做是诅咒,而不是救赎。指定处理脚本的特定解释器的能力是一个重要的特性。
相反,将CGI脚本打包为一个简单的CPAN模块,然后使用熟悉的
shebang行将自动调整以反映用于构建和安装软件包的
perl
。cwxwcias2#
首先,不要在脚本中指定Perl解释器的特定路径:
或
请指定以下内容:
这将在您的
$PATH
中找到第一个可执行的Perl解释器,然后使用它来执行Perl脚本。这样,您不必更改程序,只需更改$PATH
变量。下一次,请看一下PerlBrew,它可以安装不同版本的Perl,PerlBrew允许您安装多个版本的Perl,所有这些都在用户控制之下,并允许您选择要使用的Perl版本。
我还建议把
/usr/local/bin
作为$PATH
的第一个条目,然后把你想运行的可执行文件链接到那个目录,你可以用类似下面的代码来创建链接:这样,所有你想执行的程序都在同一个目录下,这使得设置
$PATH
变得容易得多。我甚至把/usr/local/bin
放在/usr/bin
和/bin
之前,因为我想能够 * 覆盖 * 系统的默认版本。