Я записал сценарий Perl, я просто хочу дать его всем, для которых я запланировал записать сценарий удара, который используется, чтобы протестировать среду пользователя и найти, способна ли та среда к запущению скрипта Perl.
Я хочу протестировать вещи как:
Любое предложение было бы значительно ценивший :-)
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
против nawk
или gawk
; troff
против groff
; и т.д.).
Если вы хотите проверить версию JSON::Any, перехватите вывод команды.
Если вы хотите проверить версию Perl, добавьте 'use 5.008009;
' или любое другое число, которое вы считаете разумным. (Не так давно на работе наконец-то удалили Perl 4 с одной из файловых систем, подключенных по NFS, но это был не единственный Perl на машине - по крайней мере, не в последнее десятилетие или более!)
Нет, не пишите сценарий оболочки. В Perl уже есть прекрасный способ сделать это. Правильный способ сделать это - собрать дистрибутив с поддержкой CPAN, используя обычный набор инструментов. Кое-что из этого объясняется в perlnewmod, perlmodstyle и perlmodinstall.
Для минимального рабочего примера создайте схему директории следующим образом:
.
├── Build.PL
├── README
└── script
└── abuscript.pl
В файл Build.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-модуль Module-Starter-PBP помогут вам.
Если позволяет лицензия, можно загрузить свой код в CPAN, чтобы сделать его еще более удобным для ваших пользователей. Сначала попросите помощи в любом из следующих мест: список рассылки module-authors@perl.org, веб-форум PerlMonks, IRC-канал #toolchain на MagNET (irc://irc.perl.org/toolchain)
Что касается проверки наличия Perl, самый простой способ сделать это - проверить код возврата (код выхода) команды perl -v
, если он не 0
, у вас нет Perl.
Теперь о требованиях Perl, вы должны разобраться с ними внутри вашего Perl скрипта:
#!/usr/bin/env perl
use 5.006_001;
use ModuleName 2.0;
Приведенный выше Perl код будет работать только с perl 5.6.1 или новее и с modele "ModuleName" версии 2.0 или новее. Нет необходимости вручную проверять версию Perl из bash, лучше и проще сделать это непосредственно из Perl-скрипта.
Ссылки: