Я не рекомендую ставить perlbrew switch perl-5.12.2
в любой скрипт, который вы запускаете. Это действительно только для использования командной строки.
Если вам нужен сценарий для использования конкретной версии Perl, либо укажите полный путь perlbrew
на шебанге:
#!/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
, и это может стать угрозой безопасности. Последнее также не очень хорошо, потому что оно зависит от того, на что perl perlbrew
переключается в данный момент в момент его запуска: (
Это может стать потенциальным кошмаром для производства и безопасности. Вместо этого выше должно быть написано так:
#!/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
Надеюсь, что все имеет смысл?