我不建议将perlbrew switch perl-5.12.2
在您运行的任何脚本中。它实际上仅适用于命令行使用。
如果您需要一个脚本来使用特定版本的 Perl,那么要么给它完整的perlbrew
shebang 上的路径:
#!/home/dave/perl5/perlbrew/perls/perl-5.12.2/bin/perl
use 5.012;
use warnings;
...
然后确保其可执行并像这样运行:
chmod +x your_perl_program.pl
./your_perl_program.pl
或者在脚本中使用 perl 二进制文件的完整路径名:
#!/bin/bash
/home/dave/perl5/perlbrew/perls/perl-5.12.2/bin/perl your_perl_program.pl
顺便说一句,如果您在脚本或 Perl 程序中运行任何不合格的内容,您将面临潜在的生产和安全问题。例如:
#!/bin/sh
# security risk
perl some_script.pl
# and not just perl
tar cvf archive.tar *.txt
# production risk
/home/dave/perl5/perlbrew/bin/perl some_other_script.pl
前两个不好,因为它会选择第一个perl
& tar
它在你的路径中找到。所以这取决于$PATH
设置,这可能会成为安全风险。最后一个也不好,因为它依赖于 perlperlbrew
当前切换到其运行的时间点:(
因此,这样做可能会成为潜在的生产和安全噩梦。相反,上面应该这样写:
#!/bin/sh
# fully qualified now. Uses OS provided perl
/usr/bin/perl some_script.pl
# ditto
/usr/bin/tar cvf archive.tar *.txt
# this needs to run in perl 5.12.2
/home/dave/perl5/perlbrew/perls/perl-5.12.2/bin/perl some_other_script.pl
希望一切都有意义吗?