我有一个脚本必须在 Perl 5.10.1 中运行,尽管我大学的 linux 集群系统使用的是最新版本的 Perl。我尝试安装 Perlbrew,但我认为它不起作用。
由于调用/运行此脚本的方式,我不确定如何在 shebang 中指定 perl 版本。有“cluster.pl”,通过运行“./command.txt”运行。
此外,我认为我无法安装 Perlbrew,因为它是大学的 linux 系统:复制粘贴安装命令后,我的终端屏幕显示已安装 perlbrew 补丁,但是当我使用“perlbrew install perl-5.10. 1”,它会说“command perlbrew not found”我不知道如何运行脚本
截至目前,cluster.pl 有这个 shebang:
#!/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 会去哪里?我也会在我的路径中包含“程序”吗?
最佳答案
如果您将脚本包装在 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
您可以尝试使用我的应用丰富的发行版。下载 tarball 并使用您想要的 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 的符号链接(symbolic link),这可能会造成混淆。我不使用 perlbrew,因为我认为它除了让您查找下载 URL 之外并没有增加太多。我 install multiple perls (和 How should I install more than one version of Perl? )并且可以使用它们的路径所以我知道使用哪个版本。 env 也有类似的问题,具体取决于您设置路径的方式。你如何处理它取决于你决定如何管理事物,但正是这些问题表明便利的工具并不是那么方便。
关于linux - 如何在不安装 perlbrew 的情况下指定用于脚本的 perl 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56530104/