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

Я написал сценарий Perl, я просто хочу дать его каждому, для этого я планировал написать сценарий bash, который используется для тестирования среды пользователя и найти, способна ли эта среда запускать скрипт Perl.

Я хочу проверить такие вещи, как:

  1. установлен ли Perl в этой системе
  2. Perl должен иметь версию 5 или более
  3. является ли модуль JSON:: Any доступно

любое предложение было бы весьма признателен : -)

3 ответов


if perl -MJSON::Any -e 'print "$JSON::Any::VERSION\n"' >/dev/null 2>&1
then : OK
else echo "Cannot find a perl with JSON::Any installed" 1>&2
     exit 1
fi

Я часто использую '${PERL:-perl}' и аналогичные конструкции для идентификации команды (для awk vs nawk или gawk; troff vs groff; и др.).

если вы хотите проверить версию JSON:: Any, захватите вывод из команды вместо этого. Если вы хотите протестировать версию Perl, добавьте'use 5.008009;' или любое число, которое вы считаете разумным. (Не так давно они, наконец, удалили Perl 4 из одной из файловых систем, смонтированных в NFS, но это было не единственное Perl на машине - по крайней мере, не в последнее десятилетие или больше!)


нет, не пишите сценарий оболочки. У Perl уже есть прекрасный способ сделать это. Правильный способ сделать это-создать готовый к CPAN дистрибутив, используя обычную цепочку инструментов. Некоторые из них объясняются в perlnewmod, perlmodstyle и perlmodinstall.

для минимального рабочего примера создайте макет каталога таким образом:

.
├── Build.PL
├── README
└── script
    └── abuscript.pl

на , говоря:

use 5.000;
use Module::Build qw();
Module::Build->new(
    module_name        => 'abuscript',
    dist_version       => '1.000',
    dist_author        => 'abubacker <abubacker@example.com>',
    dist_abstract      => 'describe what the script does in one sentence',
    configure_requires => {
        'perl' => '5.000',
    },
    requires           => {
        'JSON::Any' => 0,
    },
)->create_build_script;

изменить данные в поставьте свои цели.

на README файл, поместите некоторые инструкции по установке, например:

To install this module, run the following commands:

perl Build.PL
./Build install

как только вы закончите со всем этим, вы запустите:

perl Build.PL
./Build manifest
./Build dist

в результате .tar.gz архиве, который вы будете распространять. Скажите своим пользователям установить его как любой другой модуль CPAN, или если они не знают, что это значит, они должны прочитать README.

если у вас есть время, я рекомендую преобразовать ваш скрипт в модуль. Программа pl2pm (поставляется с Perl) и модулем CPAN модуль-стартер-PBP помочь вам.

если лицензия позволяет, можно загрузить код в CPAN, чтобы сделать его еще более удобным для ваших пользователей. Сначала обратитесь за помощью в любое из следующих мест: список рассылкиmodule-authors@perl.org, веб-форум PerlMonks, IRC-канал #тулчейна на магнит (на IRC://IRC не.на Perl.орг/инструментария)


Что касается проверки доступности Perl, самый простой способ сделать это-проверить код возврата (код выхода) команды perl -v,если это не 0, У вас нет Perl.

Теперь относительно требований Perl, вы должны разберитесь с ними изнутри вашего скрипта Perl:

#!/usr/bin/env perl
use 5.006_001;
use ModuleName 2.0;

приведенный выше код Perl будет работать только с perl 5.6.1 или новее и с моделью "ModuleName" версии 2.0 или новее. нет необходимости вручную проверять Perl версия от bash, лучше и проще сделать это непосредственно из скрипта Perl.

ссылки: