NOME


NOME

perl - Practical Extraction and Report Language [Linguaggio Pratico di Estrazione e Report, NdT]


SINOSSI

perl-sTuU ] [ -hv ] [ -V[:variabilediconfigurazione] ] [ -cw ] [ -d[:debugger] ] [ -D[numero/lista] ] [ -pna ] [ -Fpattern ] [ -l[ottale] ] [ -0[ottale] ] [ -Idirectory ] [ -m[-]modulo ] [ -M[-]'modulo...' ] [ -P ] [ -S ] [ -x[directory] ] [ -i[estensione] ] [ -e 'comando' ] [ -- ]     [ filedelprogramma ] [ argomento ]...

Se per voi il Perl è una novità, dovreste iniziare con the perlintro manpage, una introduzione per principianti che fornisce qualche informazione generale per aiutarvi a consultare il resto dell'ampia documentazione.

Per facilitarne l'accesso, il manuale del Perl è stato suddiviso in diverse parti.

In generale

    perl                Perl in generale (questa parte)
    perlintro           Introduzione al Perl per principianti
    perltoc             Sommario della documentazione del Perl

Tutorial

    perlreftut          Breve introduzione ai riferimenti in Perl
    perldsc             Introduzione alle strutture dati del Perl
    perllol             Strutture dati del Perl: liste di liste
    perlrequick         Espressioni regolari in Perl in una breve sintesi
    perlretut           Tutorial alle espressioni regolari in Perl
    perlboot            Tutorial per principianti al Perl orientato agli oggetti
    perltoot            Tutorial al Perl orientato agli oggetti, prima parte
    perltooc            Tutorial al Perl orientato agli oggetti, seconda parte
    perlbot             Perl orientato agli oggetti, trucchi ed esempi
    perlstyle           Guida allo stile in Perl
    perlcheat           Promemoria Perl
    perltrap            Trappole del Perl per gli incauti
    perldebtut          Tutorial al debugging in Perl
    perlfaq             Perl FAQ: risposte alla domande pił frequenti
      perlfaq1          Domande generali sul Perl
      perlfaq2          Ottenere ed imparare Perl
      perlfaq3          Strumenti di programmazione
      perlfaq4          Manipolazione dei dati
      perlfaq5          File e formati
      perlfaq6          Espressioni regolari
      perlfaq7          Questioni generali sul linguaggio Perl
      perlfaq8          Interazione con il sistema
      perlfaq9          Programmazione di rete

Guida di riferimento

    perlsyn             Sintassi Perl
    perldata            Strutture dati in Perl
    perlop              Operatori e precedenza in Perl
    perlsub             Subroutine in Perl
    perlfunc            Funzioni predefinite del Perl
      perlopentut       Tutorial all'open() di Perl
      perlpacktut       Tutorial per pack() e unpack()
    perlpod             Documentazione POD (plain old documentation) di programmi Perl
    perlpodspec         Specifiche di formattazione della documentazione POD di programmi Perl
    perlrun             L'esecuzione del Perl e le opzioni
    perldiag            Messaggi di diagnostica del Perl
    perllexwarn         Gli warning del Perl e il loro controllo
    perldebug           Debugging del Perl
    perlvar             Variabili predefinite in Perl
    perlre              Espressioni regolari in Perl, il resto della storia
    perlreref           Guida veloce alle espressioni regolari in Perl
    perlref             Riferimenti in Perl, il resto della storia
    perlform            Formati in Perl
    perlobj             Oggetti in Perl
    perltie             Oggetti Perl nascosti dietro a semplici variabili
      perldbmfilter     Filtri DBM in Perl
    perlipc             Comunicazione tra processi in Perl
    perlfork            Informazioni su fork() in Perl
    perlnumber          Semantica dei numeri in Perl
    perlthrtut          Tutorial ai thread in Perl
      perlothrtut       Vecchio tutorial ai thread in Perl
    perlport            Guida alla portabilita` del codice Perl
    perllocale          Supporto del Perl al locale 
    perluniintro        Introduzione al Perl per Unicode
    perlunicode         Supporto del Perl per Unicode
    perlebcdic          Considerazioni sull'esecuzione di codice Perl su piattaforme EBCDIC
    perlsec             Perl e sicurezza
    perlmod             Moduli Perl: come funzionano
    perlmodlib          Moduli Perl: come scriverli e usarli
    perlmodstyle        Moduli Perl: come scriverli con stile
    perlmodinstall      Moduli Perl: come installarli da CPAN
    perlnewmod          Moduli Perl: preparare un nuovo modulo per la distribuzione
    perlutil            Utilita` incluse nella distribuzione del Perl
    perlcompile         Introduzione al compilatore del Perl
    perlfilter          Filtri del sorgente del Perl
    perlglossary        Glossario del Perl

Questioni interne e interfaccia con il linguaggio C

    perlembed           Modalita` di inclusione di codice Perl in applicazioni C o C++
    perldebguts         Meccanismi e suggerimenti al debugging del Perl
    perlxstut           Tutorial a XS in Perl
    perlxs              Interfaccia del Perl alla programmazione delle applicazioni in XS
    perlclib            Sostituzione interna per librerie standard di funzioni C
    perlguts            Funzioni interne del Perl per coloro che sviluppano estensioni
    perlcall            Convenzioni di chiamata di Perl da C
    perlapi             Lista delle API Perl (autogenerata)
    perlintern          Funzioni interne del Perl (autogenerata)
    perliol             API C per l'implementazione in perl di IO in layer (NdT: strati)
    perlapio            Interfaccia all'astrazione IO interna del Perl
    perlhack            Guida all'"hacking" del Perl

Varie

    perlbook            Informazioni di libri sul Perl
    perltodo            Cose da fare sul Perl
    perldoc             Look up Perl documentation in Pod format
    perlhist            Registrazioni storiche di Perl
    perldelta           Modifiche del Perl dalla versione precedente
    perl587delta        Modifiche del Perl nella versione 5.8.7
    perl586delta        Modifiche del Perl nella versione 5.8.6
    perl585delta        Modifiche del Perl nella versione 5.8.5
    perl584delta        Modifiche del Perl nella versione 5.8.4
    perl583delta        Modifiche del Perl nella versione 5.8.3
    perl582delta        Modifiche del Perl nella versione 5.8.2
    perl581delta        Modifiche del Perl nella versione 5.8.1
    perl58delta         Modifiche del Perl nella versione 5.8.0
    perl573delta        Modifiche del Perl nella versione 5.7.3
    perl572delta        Modifiche del Perl nella versione 5.7.2
    perl571delta        Modifiche del Perl nella versione 5.7.1
    perl570delta        Modifiche del Perl nella versione 5.7.0
    perl561delta        Modifiche del Perl nella versione 5.6.1
    perl56delta         Modifiche del Perl nella versione 5.6
    perl5005delta       Modifiche del Perl nella versione 5.005
    perl5004delta       Modifiche del Perl nella versione 5.004
    perlartistic        Diritti d'autore sul Perl
    perlgpl             Licenza pubblica generica (GNU)

Lingue straniere

    perlcn              Perl per la lingua cinese semplificata (EUC-CN)
    perljp              Perl per la lingua giapponese (EUC-JP)
    perlko              Perl per la lingua coreana (in EUC-KR)
    perltw              Perl per la lingua cinese trazizionale (Big5)

Piattaforme

    perlaix             Osservazioni sul Perl per AIX
    perlamiga           Osservazioni sul Perl per AmigaOS
    perlapollo          Osservazioni sul Perl per Apollo DomainOS
    perlbeos            Osservazioni sul Perl per BeOS
    perlbs2000          Osservazioni sul Perl per POSIX-BC BS2000
    perlce              Osservazioni sul Perl per WinCE
    perlcygwin          Osservazioni sul Perl per Cygwin
    perldgux            Osservazioni sul Perl per DG/UX
    perldos             Osservazioni sul Perl per DOS
    perlepoc            Osservazioni sul Perl per EPOC
    perlfreebsd         Osservazioni sul Perl per FreeBSD
    perlhpux            Osservazioni sul Perl per HP-UX
    perlhurd            Osservazioni sul Perl per Hurd
    perllinux           Osservazioni sul Perl per Linux
    perlirix            Osservazioni sul Perl per Irix
    perlmachten         Osservazioni sul Perl per Power MachTen
    perlmacos           Osservazioni sul Perl per Mac OS (Classic)
    perlmacosx          Osservazioni sul Perl per Mac OS X
    perlmint            Osservazioni sul Perl per MiNT
    perlmpeix           Osservazioni sul Perl per MPE/iX
    perlnetware         Osservazioni sul Perl per NetWare
    perlopenbsd         Osservazioni sul Perl per OpenBSD
    perlos2             Osservazioni sul Perl per OS/2
    perlos390           Osservazioni sul Perl per OS/390
    perlos400           Osservazioni sul Perl per OS/400
    perlplan9           Osservazioni sul Perl per Plan 9
    perlqnx             Osservazioni sul Perl per QNX
    perlsolaris         Osservazioni sul Perl per Solaris
    perltru64           Osservazioni sul Perl per Tru64
    perluts             Osservazioni sul Perl per UTS
    perlvmesa           Osservazioni sul Perl per VM/ESA
    perlvms             Osservazioni sul Perl per VMS
    perlvos             Osservazioni sul Perl per Stratus VOS
    perlwin32           Osservazioni sul Perl per Windows

Di regola le pagine di documentazione sopraelencate sono installate nella directory /usr/local/man/.

È disponibile una documentazione aggiuntiva specifica per i moduli Perl. La configurazione standard del Perl prevede il posizionamento di tale documentazione nella directory /usr/local/lib/perl5/man (altrimenti nella sottodirectory man nella directory riservata ai moduli). Parte di questa documentazione aggiuntiva è inclusa nella distribuzione standard del Perl, ma è possibile che sia inclusa anche documentazione di moduli sviluppati da terze parti.

Dovreste essere in grado di vedere la documentazione del Perl con il vostro programma man(1) avendo inserito le giuste directory negli appropriati file di inizializzazione o nella variabile di ambiente MANPATH. Per sapere dove sono installate le documentazioni secondo la vostra configurazione, digitate:

    perl -V:man.dir

Se le directory hanno una derivazione in comune, del tipo /usr/local/man/man1 e /usr/local/man/man, è sufficiente aggiungere tale derivazione (/usr/local/man) ai file di inizializzazione di man(1) o nella variabile di ambiente MANPATH. In caso contrario, è necessario aggiungere l'indicazione di entrambe.

Se per qualche ragione non dovesse funzionare, potreste sempre usare lo script perldoc fornito per visualizzare informazioni sui moduli. Potreste anche prendere in considerazione una rimpiazzo per il programma man.

Se qualcosa va storto con il vostro programma e non siete sicuri su dove cercare aiuto, provate prima l'opzione -w. Molto spesso fornirà esatte indicazioni su dove è localizzato il problema.


DESCRIZIONE

Il Perl è un linguaggio ottimizzato per la scansione di qualsivoglia file di testo, per l'estrazione di informazioni da questi file, e per la stampa di report basati su tale informazione. È inoltre un buon linguaggio per finalità di amministrazione di sistemi. Il linguaggio è volto più alla praticità (facile da usare, efficiente, completo) che alla bellezza (breve, elegante, minimale).

Il Perl combina (opinione dell'autore, almeno) alcune delle migliori caratteristiche del C, sed, awk, e sh, in modo tale che chi ha dimestichezza con questi linguaggi dovrebbe avere poche difficoltà. (Gli storici dei linguaggi troveranno anche alcune vestigia di csh, Pascal, e pure BASIC-PLUS.) La sintassi delle espressioni ha una forte somiglianza con quella del C. A differenza di molte utility di Unix, il Perl non limita arbitrariamente le dimensioni dei vostri dati; se disponete di sufficiente memoria, Perl può accalappiare l'intero vostro file come una singola stringa. La ricorsione ha profondità illimitata. E le tabelle utilizzate per gli hash (talvolta chiamate ``array associativi'') crescono - se necessario - per prevenire peggioramenti in termini di performance. Il Perl può utilizzare tecniche sofisticate di pattern matching per la scansione veloce di grandi quantità di dati. Sebbene ottimizzato per la scansione di testi, Perl può anche trattare dati in forma binaria e può fare in modo da trattare come hash i file ``dbm''. Gli script ``setuid'' in Perl sono più sicuri degli equivalenti in C a causa di un meccanismo di tracciamento del dataflow che previene diverse stupide falle di sicurezza.

Se avete un problema che richiederebbe l'uso di sed o awk o sh, ma eccede le loro capacità o volete che venga risolto un po' più velocemente, e non volete scrivere stupidaggini in C, allora il Perl potrebbe fare al caso vostro. Esistono anche dei traduttori per trasformare i vostri script sed e awk in codice Perl.

Ma aspettate, c'è dell'altro...

Nel 1993 (si veda the perlhist manpage) è iniziata una riscrittura quasi completa della versione 5 del Perl che comporta i seguenti benefici addizionali:

Ok, di promozione ce n'è veramente abbastanza.


DISPONIBILITÀ

Perl è disponibile per più sistemi operativi, incluse virtualmente tutte le piattaforme che si basano su Unix. Si veda Supported Platforms in the perlport manpage [``Piattaforme supportate'', NdT] per un elenco.


AMBIENTE

Si veda the perlrun manpage.


AUTORE

Larry Wall <larry@wall.org>, con l'aiuto di suggerimenti di altra gente.

Se le vostre storie e testimonianze di successo con Perl possono essere di aiuto ad altri che desiderano raccomandare l'uso del Perl nelle loro applicazioni, o se desiderate semplicemente esprimere la vostra gratitudine a Larry e agli sviluppatori del Perl, scrivete a perl-thanks@perl.org.


FILE

 "@INC"                 posizionamenti delle librerie Perl


SI VEDA ANCHE

 a2p    traduttore da awk a perl
 s2p    traduttore da sed a perl
 http://www.perl.org/       la homepage di Perl
 http://www.perl.com/       articoli sul Perl (O'Reilly)
 http://www.cpan.org/       l'archivio completo del Perl
 http://www.pm.org/         i Perl "Mongers"


DIAGNOSTICHE

L'utilizzo della direttiva use warnings (e dell'opzione -w) produce qualche diagnostica carina.

Si veda the perldiag manpage per una spiegazione di tutte le diagnostiche del Perl. La direttiva use diagnostics trasforma automaticamente gli warning concisi del Perl e gli errori, in queste forme più estese.

Gli errori di compilazione indicheranno il numero della linea di codice che ha causato l'errore, con una indicazione del simbolo successivo o del tipo di simbolo che avrebbe dovuto essere esaminato. (In ogni script eseguito con l'opzione -e, ogni -e è contato come una linea).

Gli script ``setuid'' hanno restrizioni addizionali che possono produrre messaggi di errore del tipo ``Insecure dependency'' [``dipendenza rischiosa'', NdT]. Si veda the perlsec manpage.

Abbiamo menzionato che è caldamente consigliato l'uso dell'opzione -w?


BUG

L'opzione -w non è obbligatoria.

Il Perl è alla mercé di come la vostra macchina definisce varie operazioni come casting dei tipi, atof(), e output di floating-point con sprintf().

Se la vostra stdio richiede un seek o un eof tra letture e scritture su uno certo stream, la stessa cosa vale per il Perl. (Ciò non vale per sysread() e syswrite()).

Benché nessuno dei tipi di dato primitivi abbia un qualche limite in termini di dimensioni (ad eccezione della memoria disponibile), ci sono sempre alcuni limiti: il nome delle variabili non può essere più lungo di 251 caratteri. I numeri di linea visualizzati per le diagnostiche sono memorizzati internamente come short integers (interi), per cui sono limitati fino a un massimo di 65535 (numeri maggiori di solito sono tagliati).

Potete spedire i vostri bug report (siate sicuri di includere l'informazione completa sulla configurazione così come viene riportata in output dal programma myconfig nella directory del sorgente del Perl, o eseguendo perl -V) a perlbug@perl.org. Se avete compilato Perl con successo, lo script perlbug nelle utils/ sottodirectory può essere usato come aiuto per spedire un bug report.

Perl in realtà sta per Pathologically Eclectic Rubbish Lister [``patologicamente eclettico elencatore di robaccia'', NdT], ma non dite a nessuno che ve l'ho detto.


ANNOTAZIONI

Il motto del Perl è ``C'è più di un modo per farlo''. Indovinare quanti modi in più è lasciato per esercizio al lettore.

Le tre principali virtù di un programmatore sono Pigrizia, Impazienza e Arroganza. Si veda il perché nel libro del cammello.


TRADUZIONE

Versione

La versione su cui si basa questa traduzione è ottenibile con:

   perl -MPOD2::IT -e print_pod perl

Per maggiori informazioni sul progetto di traduzione in italiano si veda http://pod2it.sourceforge.net/ .

Traduttore

Traduzione a cura di Raffaello Galli <galliraf at googlemail punto com>.

Revisore

Revisione a cura di dree.

 NOME