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 perlintro, 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 perlhist) è 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 perlport ["Piattaforme supportate", NdT] per un elenco.

AMBIENTE

Si veda perlrun.

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 perldiag 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 perlsec.

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.

1 POD Error

The following errors were encountered while parsing the POD:

Around line 47:

Non-ASCII character seen before =encoding in 'più'. Assuming CP1252