Wie Verfügbarkeit von Perl, seine Version und das Vorhandensein eines erforderlichen Modul zu überprüfen?
-
25-09-2019 - |
Frage
Ich habe einen Perl-Skript geschrieben, ich möchte nur, um sich zu jedem, für das ich geplant einen Bash-Skript zu schreiben, die die Umgebung eines Benutzers zu testen und festzustellen, ob die Umgebung für den Betrieb des Perl-Skript kann.
Ich will die Dinge testen, wie:
- Ob Perl hat in diesem System installiert
- sollte Perl hat die Version 5 oder mehr
- Ob das Modul JSON :: Jeder ist verfügbar
würde Jeder Vorschlag sehr geschätzt: -)
Lösung
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
ich oft verwenden '${PERL:-perl}
' und ähnliche Konstrukte den Befehl zu identifizieren (für awk
vs nawk
oder gawk
; troff
vs groff
; usw.).
Wenn Sie die Version von JSON :: Jeder, erfassen die Ausgabe des Befehls statt testen möchten.
Wenn Sie die Version von Perl testen möchten, fügen Sie ‚use 5.008009;
‘ oder was auch immer Zahl denken Sie sinnvoll ist. (Es war nicht so lange her, dass sie endlich Perl 4 entfernt von einem der NFS-Dateisysteme bei der Arbeit - aber das war nicht die einzige Perl an der Maschine - zumindest nicht in den letzten zehn Jahren oder mehr!)
Andere Tipps
Nein, nicht schreiben, einen Shell-Skript. Perl hat bereits eine völlig in Ordnung, Art und Weise, dies zu tun. Der richtige Weg, dies zu tun, ist eine CPAN-ready Verteilung baut die normale Werkzeugkette verwenden. Ein Teil davon wird erklärt in perlnewmod , perlmodstyle und perlmodinstall .
Für ein minimales Arbeits Beispiel einer Verzeichnisstruktur erstellen also:
.
├── Build.PL
├── README
└── script
└── abuscript.pl
In der Build.PL
Datei setzen:
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;
Ändern Sie die Details Ihre Zwecke Hotel.
In der README
Datei, setzte einige Installationsanweisungen, zum Beispiel:
To install this module, run the following commands:
perl Build.PL
./Build install
Wenn Sie mit allen fertig sind, die, Sie laufen:
perl Build.PL
./Build manifest
./Build dist
Dies wird in einem .tar.gz
Archiv führen, die Sie verteilen. Lassen Sie Ihre Benutzer es wie jedes andere CPAN-Modul zu installieren, oder wenn sie nicht wissen, was das bedeutet, sie sollten die Readme lesen.
Wenn Sie Zeit haben, empfehle ich das Skript zu einem Modul zu konvertieren. Das Programm pl2pm (kommt mit Perl) und dem CPAN-Modul Modul-Starter-PBP helfen Ihnen.
Wenn Lizenz zulässt, ist es möglich, Ihren Code zu CPAN hochzuladen noch bequemer für die Benutzer zu machen. Bitten Sie um Hilfe in einem der folgenden Orte zuerst: Mailingliste module-authors@perl.org , Webforum PerlMonks , IRC-Kanal #toolchain auf MAGNET (irc: //irc.perl.org/toolchain)
Im Hinblick auf die Überprüfung Perl Verfügbarkeit der einfachste Weg, es zu tun ist, den Return-Code zu überprüfen (Exit-Code) des Befehls perl -v
, falls dies nicht 0
ist, müssen Sie Perl nicht haben.
Jetzt Anforderungen Perl in Bezug auf Sie sollte Deal mit ihnen aus Ihrem Perl-Skript:
#!/usr/bin/env perl
use 5.006_001;
use ModuleName 2.0;
Der obige Code Perl nur mit Perl 5.6.1 oder neuer und mit modele „Module“ Version 2.0 oder höher ausgeführt werden. Es besteht keine Notwendigkeit, manuell die Perl-Version überprüft von bash, ist es besser und einfacher ist es, aus dem Perl-Skript direkt zu tun.
Referenzen: