=head1 NOME perl - Practical Extraction and Report Language [Linguaggio Pratico di Estrazione e Report, NdT] =head1 SINOSSI B S<[ B<-sTuU> ]> S<[ B<-hv> ] [ B<-V>[:I] ]> S<[ B<-cw> ] [ B<-d>[:I] ] [ B<-D>[I] ]> S<[ B<-pna> ] [ B<-F>I ] [ B<-l>[I] ] [ B<-0>[I] ]> S<[ B<-I>I ] [ B<-m>[B<->]I ] [ B<-M>[B<->]I<'modulo...'> ]> S<[ B<-P> ]> S<[ B<-S> ]> S<[ B<-x>[I] ]> S<[ B<-i>[I] ]> S<[ B<-e> I<'comando'> ] [ B<--> ] [ I ] [ I ]...> Se per voi il Perl E una novitE, dovreste iniziare con L, 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 E stato suddiviso in diverse parti. =head2 In generale perl Perl in generale (questa parte) perlintro Introduzione al Perl per principianti perltoc Sommario della documentazione del Perl =head2 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 =head2 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 =head2 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 =head2 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) =head2 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) =head2 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 F. E disponibile una documentazione aggiuntiva specifica per i moduli Perl. La configurazione standard del Perl prevede il posizionamento di tale documentazione nella directory F (altrimenti nella sottodirectory F nella directory riservata ai moduli). Parte di questa documentazione aggiuntiva E inclusa nella distribuzione standard del Perl, ma E 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 F e F, E sufficiente aggiungere tale derivazione (F) ai file di inizializzazione di man(1) o nella variabile di ambiente MANPATH. In caso contrario, E necessario aggiungere l'indicazione di entrambe. Se per qualche ragione non dovesse funzionare, potreste sempre usare lo script F 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 B<-w>. Molto spesso fornirE esatte indicazioni su dove E localizzato il problema. =head1 DESCRIZIONE Il Perl E 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. E inoltre un buon linguaggio per finalitE di amministrazione di sistemi. Il linguaggio E volto piE alla praticitE (facile da usare, efficiente, completo) che alla bellezza (breve, elegante, minimale). Il Perl combina (opinione dell'autore, almeno) alcune delle migliori caratteristiche del C, B, B, e B, in modo tale che chi ha dimestichezza con questi linguaggi dovrebbe avere poche difficoltE. (Gli storici dei linguaggi troveranno anche alcune vestigia di B, 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 puE accalappiare l'intero vostro file come una singola stringa. La ricorsione ha profonditE illimitata. E le tabelle utilizzate per gli hash (talvolta chiamate "array associativi") crescono - se necessario - per prevenire peggioramenti in termini di performance. Il Perl puE utilizzare tecniche sofisticate di pattern matching per la scansione veloce di grandi quantitE di dati. Sebbene ottimizzato per la scansione di testi, Perl puE anche trattare dati in forma binaria e puE fare in modo da trattare come hash i file "dbm". Gli script "setuid" in Perl sono piE 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 B o B o B, ma eccede le loro capacitE o volete che venga risolto un po' piE 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 B e B in codice Perl. Ma aspettate, c'E dell'altro... Nel 1993 (si veda L) E iniziata una riscrittura quasi completa della versione 5 del Perl che comporta i seguenti benefici addizionali: =over 4 =item * modularitE e riusabilitE utilizzando innumerevoli moduli Descritto in L, L, e L. =item * integrabilitE e estendibilitE Descritto in L, L, L, L, L, e L. =item * variabili magiche fai-da-te (incluse multiple implementazioni DBM simultanee) Descritto in L e L. =item * le subroutine possono adesso essere overridden, autoloaded, e prototipizzate Descritto in L. =item * strutture dati arbitrariamente annidate e funzioni anonime Descritto in L, L, L, e L. =item * programmazione orientata agli oggetti Descritto in L, L, L, L, e L. =item * supporto per processi light-weight [leggeri, NdT] (thread) Descritto in L e L. =item * supporto per Unicode, internazionalizzazione e localizzazione Descritto in L, L e L. =item * scoping lessicale Descritto in L. =item * miglioramenti alle espressioni regolari Descritto in L, con esempi addizionali in L. =item * enhanced debugger e ambiente Perl interattivo, con supporto integrato all'editor Descritto in L, L e L. =item * libreria conforme a POSIX 1003.1 Descritto in L. =back Ok, di promozione ce n'E I abbastanza. =head1 DISPONIBILITE Perl E disponibile per piE sistemi operativi, incluse virtualmente tutte le piattaforme che si basano su Unix. Si veda L ["Piattaforme supportate", NdT] per un elenco. =head1 AMBIENTE Si veda L. =head1 AUTORE Larry Wall , 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. =head1 FILE "@INC" posizionamenti delle librerie Perl =head1 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" =head1 DIAGNOSTICHE L'utilizzo della direttiva C (e dell'opzione B<-w>) produce qualche diagnostica carina. Si veda L per una spiegazione di tutte le diagnostiche del Perl. La direttiva C trasforma automaticamente gli warning concisi del Perl e gli errori, in queste forme piE 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 B<-e>, ogni B<-e> 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 L. Abbiamo menzionato che E caldamente consigliato l'uso dell'opzione B<-w>? =head1 BUG L'opzione B<-w> non E obbligatoria. Il Perl E alla mercE 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. (CiE non vale per sysread() e syswrite()). BenchE 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 puE essere piE 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 cosE come viene riportata in output dal programma myconfig nella directory del sorgente del Perl, o eseguendo C) a perlbug@perl.org. Se avete compilato Perl con successo, lo script B nelle F sottodirectory puE essere usato come aiuto per spedire un bug report. Perl in realtE sta per Pathologically Eclectic Rubbish Lister ["patologicamente eclettico elencatore di robaccia", NdT], ma non dite a nessuno che ve l'ho detto. =head1 ANNOTAZIONI Il motto del Perl E "C'E piE di un modo per farlo". Indovinare quanti modi in piE E lasciato per esercizio al lettore. Le tre principali virtE di un programmatore sono Pigrizia, Impazienza e Arroganza. Si veda il perchE nel libro del cammello. =head1 TRADUZIONE =head2 Versione La versione su cui si basa questa traduzione E ottenibile con: perl -MPOD2::IT -e print_pod perl Per maggiori informazioni sul progetto di traduzione in italiano si veda http://pod2it.sourceforge.net/ . =head2 Traduttore Traduzione a cura di Raffaello Galli . =head2 Revisore Revisione a cura di dree. =cut