Come controllare la disponibilità di Perl, la sua versione e la presenza di un modulo di richiesta?
-
25-09-2019 - |
Domanda
Ho scritto uno script in Perl, voglio solo dare a tutti, per questo ho pensato di scrivere uno script bash che viene utilizzato per testare l'ambiente di un utente e scoprire se l'ambiente è in grado di eseguire lo script Perl.
Voglio testare le cose come:
- Se Perl è installato in tale sistema
- Perl dovrebbe avere la versione 5 o più
- Se il modulo di JSON :: Qualsiasi è disponibile
Ogni suggerimento sarebbe molto apprezzato: -)
Soluzione
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
Io uso spesso '${PERL:-perl}
' e costrutti simili per identificare il comando (per awk
vs nawk
o gawk
; troff
vs groff
; ecc).
Se si desidera verificare la versione di JSON :: Qualsiasi, catturare l'output del comando, invece.
Se si desidera verificare la versione di Perl, aggiungere 'use 5.008009;
' o qualunque sia il numero che si pensa è ragionevole. (Non è stato tanto tempo fa, che finalmente rimossi Perl 4 da uno dei NFS montati i file system sul lavoro - ma non era l'unico Perl sulla macchina - almeno, non negli ultimi dieci anni o più!)
Altri suggerimenti
No, non scrivere uno script di shell. Perl ha già un modo perfettamente bene di fare questo. Il modo corretto per farlo è quello di costruire una distribuzione CPAN-ready utilizzando la toolchain normale. Alcune di queste è spiegato in perlnewmod , perlmodstyle e perlmodinstall .
Per un esempio funzionante di dimensioni minimali, creare un layout directory in tal modo:
.
├── Build.PL
├── README
└── script
└── abuscript.pl
Nel file Build.PL
, messo:
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;
Modificare i dettagli ideale per la tua scopi.
Nel file README
, mettere alcune istruzioni per l'installazione, per esempio:
To install this module, run the following commands:
perl Build.PL
./Build install
Una volta che hai finito con tutto questo, si esegue:
perl Build.PL
./Build manifest
./Build dist
Questo si tradurrà in un archivio .tar.gz
che verranno distribuite. Dì ai tuoi utenti di installare come qualsiasi altro modulo CPAN, o se non sanno che cosa significa, dovrebbero leggere il file README.
Se avete tempo, vi consiglio convertire lo script a un modulo. Il programma pl2pm (viene fornito con Perl) e il modulo CPAN Module-Starter-PBP aiuto.
Se i permessi di licenza, è possibile caricare il tuo codice per CPAN per rendere ancora più conveniente per gli utenti. Chiedi aiuto a uno dei seguenti primi posti: mailing list module-authors@perl.org , web forum PerlMonks , canale IRC #toolchain il magnete (IRC: //irc.perl.org/toolchain)
Per quanto riguarda la verifica la disponibilità Perl il modo più semplice per farlo è quello di verificare il codice di ritorno (codice di uscita) del comando perl -v
, se questo non è 0
, non c'è bisogno di Perl.
Ora per quanto riguarda i requisiti Perl, è dovrebbe accordo con loro da dentro lo script Perl:
#!/usr/bin/env perl
use 5.006_001;
use ModuleName 2.0;
È possibile che questo codice Perl possa funzionare solo con Perl 5.6.1 o più recente e con modele "ModuleName" versione 2.0 o più recente. Non v'è alcuna necessità di controllare manualmente la versione di Perl da bash, è meglio e più facile da farlo direttamente dallo script Perl.
References: