Оболочка для вызова Perl - PullRequest
       1

Оболочка для вызова Perl

1 голос
/ 17 февраля 2011

Как мне вызвать Perl, используя сценарий типа оболочки, чтобы переход на более новую версию Perl не влиял на существующие сценарии?

Ответы [ 3 ]

2 голосов
/ 17 февраля 2011

Какой именно сценарий вы представляете?

Что у вас есть двоичный файл "perl", который вы можете изменить с Perl 5.8 на 5.10?

Самое простое решение - это иметьваша линия shebang указывает на Perl для конкретной версии.

У этого подхода есть два варианта: у одной - программная ссылка, зависящая от версии, у другой - «текущая производственная версия Perl».

$ ln -s /usr/local/perl5.8/bin/perl /usr/local/bin/perl5.8
$ ln -s /usr/local/perl5.8/bin/perl /usr/local/bin/current/perl

$ cat my_script.pl
#!/usr/local/bin/perl5.8
# This script is REALLY hard coded to 5.8
...

$ cat my_script2.pl
#!/usr/local/bin/current/perl
# This script is hard coded to 5.8 for now, 
# but can be easily switched to different Perl version as part of MASS migration when ready
...

Таким образом, ваш сценарий ВСЕГДА гарантированно использует Perl 5.8, даже если вы в конечном итоге обновитесь до 5.12, и двоичный файл "perl" начнет вызывать perl 5.12 до уровня PATH.

Этот подход ТАКЖЕ делаетобновление проще - просто измените программную ссылку, чтобы указать на новый бинарный файл Perl, если хотите.

1 голос
/ 23 февраля 2011

Не совсем ясно, какой из них вы хотите, но:

  • Если вы DO хотите всегда запускать первый perl в $PATH,чтобы получить прозрачные обновленные версии, вы должны использовать #!/usr/bin/env perl

  • Если вы НЕ хотите, чтобы версия, из которой вы работаете, изменилась из-подвы можете установить именно то, что вы хотите perl, в другое место , отличное от /usr/bin/perl (поскольку оно управляется вашим поставщиком ОС, а не вами, поэтому оно может измениться, когда вы не захотите илиожидайте этого) и запустите свой Perl с #!/path/to/my/custom/perl

  • В последнем случае вы все равно можете использовать #!/usr/bin/env perl и манипулировать своим $PATH, чтобы perl вы хотелииспользовать будет первым найденным.Это удобно, если вы хотите использовать разные сборки perl в разное время, например для тестирования разных версий.

1 голос
/ 17 февраля 2011

Маловероятно, что обратная совместимость для документированных функций будет нарушена в Perl 5.

Страховкой будет сохранение копии старых файлов Perl.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...