我有一个为5.6.1版编写的perl脚本,它依赖于Oracle包,DBI包和更多东西。一切都正确安装和工作。
最近安装了perl版本5.8.4,因为这些依赖项未正确设置,因此脚本失败。
'perl'命令指向/program/perl_v5.8.4/bin/perl - 最新版本
因此,当我必须运行我的perl脚本时,我必须在命令提示符中手动指定
/program/perl_v5.6.1/bin/perl scriptName.pl
我尝试在脚本中添加以下行:
/program/perl_v5.6.1/bin/perl
use v5.6.1;
但是,这意味着脚本必须采用Perl版本> 5.6.1
我发现了几个相关问题:
我的问题:如何在脚本中指定仅使用特定版本的perl?
答案 0 :(得分:8)
问题是如果像这样调用perl脚本,则不使用shebang行(#!/some/path/to/perl
)中指定的解释器:
perl some_script.pl
...然后选择'默认'(简化)perl。一个人应该使用shebang的原始力量,而不是通过执行文件本身:
./some_script.pl
当然,这意味着该文件应该是可执行的(例如,chmod a+x
)。
答案 1 :(得分:4)
我的代码中有:
our $LEVEL = '5.10.1';
our $BRACKETLEVEL = sprintf "%d.%03d%03d", split/\./, $LEVEL;
if ($] != $currentperl::BRACKETLEVEL)
{
die sprintf "Must use perl %s, this is %vd!\n", $LEVEL, $^V;
}
这些实际上是两个不同的模块,但这是基本的想法。我只是在我的脚本顶部“使用correctlevel”而不是use 5.10.1;
,如果开发人员尝试对该产品使用错误的perl级别,我就会死掉。但是,它不执行use 5.10.1;
将执行的任何其他操作(启用严格,启用诸如说,切换等功能)。