Se sei un amministratore di sistema Linux che scrive codice perl occasionale (o) uno sviluppatore che vuole imparare il linguaggio di programma perl , questi 20 suggerimenti di programmazione perl di base e i trucchi spiegati in questo articolo ti daranno un punto di partenza.
1. Elenca tutti i moduli Perl installati dalla riga di comando di Unix
Ottieni un elenco di tutti i moduli Perl installati come mostrato di seguito.
$ perl -MFile::Find=find -MFile::Spec::Functions -Tlw -e 'find { wanted => sub { print canonpath $_ if /\.pm\z/ }, no_chdir => 1 }, @INC' /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Filter.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/LinkExtor.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/PullParser.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/Parser.pm /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/HTML/TokeParser.pm .....
Nell'esempio sopra,
- File::Trova e File::Spec::Funzioni module vengono utilizzati per elencare tutti i moduli installati.
- Opzione -M carica il modulo. Esegue usa modulo prima di eseguire lo script
- Opzione -T abilita il controllo delle contaminazioni, che istruisce perl a tenere traccia dei dati dell'utente ed evitare di fare qualcosa di non sicuro con essi. Qui questa opzione viene utilizzata per evitare di prendere il nome della directory corrente dal @INC ed elenca i file .pm disponibili dalla directory in modo ricorsivo.
- opzione -l abilita l'elaborazione di fine riga automatica nell'output. Le istruzioni di stampa avranno il nuovo separatore di riga (\n) aggiunto alla fine di ogni riga.
- opzione -w stampa eventuali messaggi di avviso.
- opzione -e indica che la stringa seguente deve essere interpretata come uno script perl (cioè una sequenza di comandi).
2. Elenca tutti i moduli Perl installati da uno script perl (usando ExtUtils::pacchetto installato)
Usa il seguente frammento di codice perl per ottenere un elenco dei moduli Perl installati.
my $Inst = ExtUtils::Installed->new(); my @Modules = $Inst->modules(); print "Current List of Installed PERL Modules:\n\n"; foreach my $mod(@Modules){ print "$mod\n"; }
Nota :Il modulo ExtUtils::Installed non è preinstallato con il programma perl. Quindi dovresti installarlo da cpan.
3. Elenca i moduli Perl usando il comando Perldoc
perldoc perlmodlib elenca tutti i moduli preinstallati con il programma perl.
$ perldoc perlmodlib Attribute::Handlers Simpler definition of attribute handlers AutoLoader Load subroutines only on demand .........
Nota: Puoi anche usare il comando 'perldoc perllocal' per identificare moduli perl aggiuntivi che sono installati.
$ perldoc perllocal
perldoc Il comando perllocal elenca tutti i moduli opzionali installati nel sistema con le seguenti informazioni:
- Data di installazione
- Posizione della directory in cui è installato il modulo perl
- Numero di versione del modulo Perl
- ecc.,
4. Visualizza la documentazione Perl dalla riga di comando di Unix
Puoi usare il comando perldoc o man per ottenere aiuto su un particolare modulo perl come mostrato di seguito.
$ perldoc Regexp::Common (or) $ man Regexp::Common
Se il documento perl non è sufficiente, usa l'opzione perldoc -m, per visualizzare sia il codice sorgente che la documentazione pod non formattata del modulo perl specificato.
$ perldoc -m Regexp::Common
Per visualizzare la documentazione su una specifica funzione perl, utilizzare l'opzione -f, come mostrato di seguito.
$ perldoc -f splice
5. Visualizza la documentazione Perl online (o scaricala per l'uso offline)
Molti eccellenti tutorial perl sono disponibili online nella documentazione di programmazione Perl.
Da questo sito Web, puoi anche scaricare la versione HTML o PDF della documentazione perl per la visualizzazione offline.
- Versione completa (contiene file HTML e PDF) – perldoc.tar.gz
- Versione Lite (contiene solo file HTML) – perldoc-html.tar.gz
6. Leggi la documentazione Perl usando Podbrowser
Scarica il browser pod. Puoi sfogliare visivamente i moduli perl installati, le funzioni e la documentazione perl dal podbrowser. Dal loro sito web:
PodBrowser is a documentation browser for Perl. You can view, search and print documentation for Perl's builtin functions, its "perldoc" pages, pragmatic modules and the default and user-installed modules.
Nota: Puoi anche usare l'editor Vim come Perl-IDE come abbiamo discusso in precedenza.
7. Modifica manualmente la configurazione del modulo CPAN
Per installare i moduli perl dalla riga di comando di Linux, utilizzare CPAN. Abbiamo discusso in precedenza su come installare i moduli perl, sia manualmente che usando il comando CPAN.
La prima volta che si utilizza il modulo Perl CPAN ( perl -MCPAN ), viene eseguito uno script per configurare diverse opzioni. Ad esempio, configura la posizione dei file tar, gzip e unzip, la dimensione della cache per la directory build, la posizione del file sorgente ecc.
Per riconfigurare manualmente i file di configurazione del modulo CPAN è possibile modificare uno dei seguenti file.
- ~/.cpan/CPAN/MyConfig.pm – File di configurazione CPAN Perl specifico dell'utente
- /etc/perl/CPAN/Config.pm – Il file di configurazione CPAN Perl a livello di sistema è memorizzato da qualche parte nell'albero delle directory del modulo perl.
$ vim ~/.cpan/CPAN/MyConfig.pm (and / or) $ vim /etc/perl/CPAN/Config.pm
8. Modifica le configurazioni del modulo CPAN in modo interattivo
Avvia la shell cpan come mostrato di seguito ed esegui o conf init , che chiederà "Sei pronto per la configurazione manuale", dai la tua opzione ( Sì / No ) per continuare. Questo elencherà tutti i parametri di configurazione insieme al relativo valore.
$ perl -MCPAN -e shell cpan> o conf init cpan> o conf
9. Verifica se è installato un modulo Perl
Se vuoi sapere se un modulo perl (ad esempio, Regexp::Common) è installato, esegui il comando seguente. Se ottieni "1" come output, viene installato il modulo perl specificato. In caso contrario, riceverai il messaggio di errore come mostrato di seguito.
$ perl -MRegexp::Common -le 'print 1' Can't locate Regexp/Common.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.8.8 /usr/local/share/perl/5.8.8 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl .).
Nota: Puoi anche controllare se il modulo perl è installato usando perldoc o il comando man. Se il modulo perl è installato, la pagina man del modulo si aprirà correttamente. In caso contrario, dirà "nessun manuale/documentazione trovato per questo modulo"
$ perldoc Regexp::Common $ man Regexp::Common
10. Elenca le directory in cui si trovano i moduli Perl
L' array perl @INC contiene l'elenco dei luoghi in cui i costrutti "fai EXPR", "richiedi" o "usa" cercano i loro file di libreria. Il seguente one-liner mostra il contenuto dell'array perl @INC:
$ perl -e 'foreach $folder (@INC) { print "$folder\n";}'
11. Verifica la versione di un modulo Perl installato
Per verificare il numero di versione di un modulo usa il seguente comando.
#-- check the version number of CGI module $ perl -MCGI -e 'print "$CGI::VERSION \n"' #-- check the version number of Regexp::Common module $ perl -MRegexp::Common -e 'print "$Regexp::Common::VERSION \n"'
Nota: Inoltre, assicurati di leggere la nostra recensione sul libro Perl Best Practices.
12. Specificare la versione minima del modulo Perl da utilizzare
A volte potresti voler usare una versione specifica di un modulo perl nel tuo programma. Per evitare di utilizzare una versione precedente di quel modulo, aggiungi il numero di versione minimo che desideri nell'istruzione use 'module' come mostrato di seguito.
#-- Use version 5.8 of later of module LWP use LWP 5.8
Nota: Il tuo programma perl uscirà con un messaggio di errore appropriato se la versione del modulo installato è inferiore alla versione che hai specificato nel comando use.
13. Moduli Perl utili per lo sviluppo di applicazioni Web
Se stai sviluppando un'applicazione web, potresti prendere in considerazione l'utilizzo dei seguenti moduli perl.
- CGI – Modulo generico per la creazione di pagine web
- Modello – Template Toolkit per la generazione di contenuti web dinamici
- LWP – LWP viene utilizzato per recuperare contenuti Web
- WWW::Meccanizzare – Usalo per automatizzare l'interazione con un sito web
14. Determina il sistema operativo in cui è in esecuzione lo script Perl
Il nome del sistema operativo sottostante è memorizzato nella variabile $^O. Di seguito sono riportati alcuni dei comuni valori $^O
- linux – Linux
- MSWin32 – Windows
- Aix – AIX
- solaris – Solaris
Nota: Il valore memorizzato in $^O contiene solo il nome del sistema operativo, non il numero di versione. Per determinare il numero di versione, considera l'utilizzo di POSIX::uname() dal pacchetto POSIX.
15. Definisci valori costanti all'interno di Perl Script
Il modo migliore per definire valori costanti è usare Perl Sola lettura o Costante modulo come mostrato di seguito.
use Readonly; Readonly my $PI => 3.1415926535; (or) use Constant PI => 3.1415926535;
Si prega di notare quanto segue:
- Usando il modulo di sola lettura puoi definire scalari, hash e array di sola lettura.
- Se provi a modificare una variabile di sola lettura, il programma morirà.
16. Determina l'utente del sistema operativo e/o il gruppo del sistema operativo che esegue uno script Perl
Utilizzare le seguenti variabili predefinite per ottenere informazioni sull'utente e sul gruppo del processo corrente:
- $< – ID utente reale (uid); valore unico
- $> – ID utente effettivo (euid); valore unico
- $( – ID gruppo reale (gid); elenco (separato da spazi) di gruppi
- $) – identificativo effettivo del gruppo (egid); elenco (separato da spazi) di gruppi
Si prega di notare quanto segue:
- Queste informazioni si applicano solo ai sistemi Unix
- I valori che queste variabili contengono sono interi.
- Per ottenere i nomi degli utenti e dei gruppi, utilizza "(getpwuid($<))[0]" (per informazioni sull'utente) e "getgrgid($()" (per i gruppi).
17. Esecuzione di comandi esterni
Esistono molti modi per eseguire comandi esterni da Perl, come spiegato di seguito.
- sistema() – vuoi eseguire un comando e non vuoi catturarne l'output
- esecutivo – non vuoi tornare allo script perl chiamante
- backtick – vuoi catturare l'output del comando
- apri – vuoi inviare il comando (come input o output) al tuo script perl
18. Analizza lo script Perl disordinato semplice utilizzando B::Deparse
Hai un pezzo di codice Perl offuscato o semplicemente disordinato e difficile da leggere? Il B::Deparse modulo potrebbe essere in grado di aiutare. Compila, quindi decompila il programma che gli viene fornito, espandendolo e formattandolo bene. Rimuove le righe di commento scritte nel programma perl.
Per eseguirlo dalla riga di comando, digita "perl -MO=Deparse prog.pl". Ecco un esempio del suo utilizzo,
Per prima cosa crea il programma di input:
$ cat scary.pl for(74,117,115,116){$::a.=chr};(($_.='qwertyui')&& (tr/yuiqwert/her anot/))for($::b);for($::c){$_.=$^X; /(p.{2}l)/;$_=$1}$::b=~/(..)$/;print("$::a$::b $::c hack$1.");
Passa lo script perl scary.pl al modulo Deparse
$ perl -MO=Deparse scary.pl foreach $_ (74, 117, 115, 116) { $a .= chr $_; } ; $_ .= 'qwertyui' and tr/eiqrtuwy/nr oteah/ foreach ($b); foreach $_ ($c) { $_ .= $^X; /(p.{2}l)/; $_ = $1; } $b =~ /(..)$/; print "$a$b $c hack$1."; scary.pl syntax OK
19. Elenca i driver DBI installati
DBI è il modulo di interfaccia database standard per Perl. Il seguente programma Perl stampa un elenco di tutti i driver DBI installati.
use strict; use warnings; use DBI; print map "$_\n",DBI->available_drivers;
Esempio di output del programma sopra:
DBM ExampleP File Proxy Sponge mysql
Se il driver richiesto non è installato, utilizzare CPAN per trovare il modulo DBD (driver di database) corretto.
20. Variabile speciale di espressione regolare
Una delle funzionalità più utili o la più potente funzione di manipolazione delle stringhe in perl è l'espressione regolare.
Al centro di questo c'è l'espressione regolare che è condivisa da molte altre utilità UNIX.
Perl ha una serie di variabili speciali che vengono riempite dopo ogni corrispondenza m// o s/// regex.
- $ 1, $ 2, $ 3, ecc. mantengono i backreference.
- $+ contiene l'ultimo backreference (con il numero più alto).
- $&(dollaro e commerciale) contiene l'intera corrispondenza regolare.
- $' (dollaro seguito da un apostrofo o virgolette singole) contiene la parte della stringa dopo (a destra) la corrispondenza regolare.
- $` (backtick del dollaro) contiene la parte della stringa prima (a sinistra) della corrispondenza regolare.
L'uso di queste variabili non è consigliato negli script Perl quando le prestazioni sono importanti, poiché fa sì che Perl rallenti tutti regex corrisponde all'intero script perl.
Tutte queste variabili sono di sola lettura e persistono fino a quando non viene tentata la successiva corrispondenza regex.
Esempio
$string = "This is the geek stuff article for perl learner"; $string =~ /the (g.*) stuff(.*) /; print "Matched String=>$&\nBefore Match=>$`\nAfter Match=>$'\nLast Paren=>$+\nFirst Paren=>$1\n";
Output dell'esempio sopra:
Matched String=>the geek stuff article for perl Before Match=>This is After Match=>learner Last Paren=> article for perl First Paren=>geek