如何在不安装perlbrew的情况下指定用于脚本的perl版本

时间:2019-06-10 16:25:43

标签: linux perl

我有一个必须在Perl 5.10.1中运行的脚本,尽管我所在大学的linux集群系统使用的是Perl的最新版本。我尝试安装Perlbrew,但我认为它不起作用。

由于我调用/运行此脚本的方式,我不确定如何在shebang中指定perl版本。有“ cluster.pl”,可以通过运行“ ./command.txt”来运行。

此外,我不认为我可以安装Perlbrew,因为它是大学的linux系统:复制粘贴安装命令后,我的终端屏幕上说安装了perlbrew补丁,但是当我使用“ perlbrew install perl-5.10。 1”,表示“找不到命令perlbrew”,我不知道如何运行脚本

截至目前,cluster.pl具有以下功能:

#!/usr/bin/perl

一个相关的问题据说要在命令行中写出

/program/perl_v5.6.1/bin/perl scriptName.pl
#OP needed to use version 5.6.1, unlike me (I need 5.10.1)

但是,我不知道“程序”是OP的目录还是路径的必需部分

下面是command.txt,其中包含必要的输入参数:

#this is command.txt
./cluster.pl Datachr1 2 galGal5.Chroinfo.txt

基本上,建议的shebang会去哪里?我也会在路径中加入“程序”吗?

1 个答案:

答案 0 :(得分:1)

如果将脚本包装在Perl的包装框架中,则会自动为您处理。安装脚本时,它会用实际的perl更改shebang行。您最终会在文件顶部看到以下内容:

#!/usr/local/perls/perl-5.30.0/bin/perl
    eval 'exec /usr/local/perls/perl-5.30.0/bin/perl -S $0 ${1+"$@"}'
        if $running_under_some_shell;
#!/usr/local/bin/perl

您可以在我的app-rhich发行版中尝试此操作。下载压缩包,并使用所需的perl运行 Makefile.PL 。运行make,它会将内容构建到 blib 登台目录中。您应该在那里看到经过修改的shebang:

$ /Users/brian/bin/perls/perl5.30.0 MAkefile.PL
Checking if your kit is complete...
Looks good
WARNING: Older versions of ExtUtils::MakeMaker may errantly install README.pod as part of this distribution. It is recommended to avoid using this path in CPAN modules.
Generating a Unix-style Makefile
Writing Makefile for App::rhich
Writing MYMETA.yml and MYMETA.json

$ make build
make: *** No rule to make target `build'.  Stop.

$ make
cp lib/App/rhich.pm blib/lib/App/rhich.pm
cp script/rhich blib/script/rhich
"/usr/local/perls/perl-5.30.0/bin/perl" -MExtUtils::MY -e 'MY->fixin(shift)' -- blib/script/rhich
Manifying 1 pod document
Manifying 1 pod document
brian@otter app-rhich  (master)[3125]

$ more blib/script/
#!/usr/local/perls/perl-5.30.0/bin/perl
package rhich;
use strict;
use warnings;

但是,如果您通往perl的路径是到其他perl的符号链接,则可能会感到困惑。我不使用perlbrew,因为我认为它除了增加您查找下载URL之外不会增加太多。我install multiple perls(和How should I install more than one version of Perl?)可以使用它们的路径,所以我知道使用哪个版本。 env 也存在类似的问题,具体取决于您如何设置路径。处理方式取决于您决定管理事物的方式,但是正是这些问题表明,便利工具并不是真的那么方便。