Simon Cozens
Advanced Perl Programming 2nd Edition

O'Reilly - 2005 - 39.95 $
ISBN:0-596-00456-7
© 2003 Perl Mongers Italia. Tutti i diritti riservati.

Recensione di kral [Voto:4/5]

Commenta la recensione

"Once you have read the Camel Book, or any other good Perl tutorial, you know almost all of the language...".

L'introduzione di "Advanced Perl Programming", scritto da Simon Cozens, inizia con queste parole. E' passato un bel po' di tempo dalla prima edizione di questo libro e Perl è cresciuto molto. Ed i suoi libri con lui. Questa edizione è completamente differente da quella precedente, è molto più improntata sui moduli e sul loro utilizzo. Come dice l'autore, questo libro è indicato soprattutto a chi ha già studiato il Camel Book o Learning Perl (o Lama book) e vuole capire cosa il Perl può offrire per il lavoro di ogni giorno. L'autore cerca di mostrarci le potenzialità che il linguaggio ha oggi: la sua grande flessibilità e la sua immensa libreria, CPAN.

Il primo capitolo ci spiega come esplorare e cambiare il vero cuore del Perl, la symbol table. Attraverso trucchi con il pragma overload, con AUTOLOAD e con i moduli UNIVERSAL e CORE Cozens ci mostra come piegare il potere di Perl per i nostri bisogni.

Il secondo capitolo merita un'attenzione speciale soprattutto per l'ottima introduzione a Parse::RecDescent, che è lo standard di fatto nel parsing di strutture complesse. Vengono introdotti anche i moduli Parse::YAPP, HTML::Parser e XML::Simple.

Svariati tipi di strumenti per il template e per la formattazione di testi vengono analizzati nel terzo capitolo. Il cuore del capitolo è lo sviluppo di un aggregatore di feed RSS con tre differenti moduli: HTML::Template, HTML::Mason e Template::Toolkit. Quest'ultimo in particolare è spiegato in profondità, tanto che occupa gran parte del capitolo.

Il capitolo seguente è una panoramica sui vari metodi per salvare e recuperare strutture di dati complesse. Queste strutture possono essere organizzate e manipolate come oggetti, e gli oggetti possono essere serializzati e salvati su database. L'applicazione d'esempio stavolta è un database per organizzare i CD musicali, usando moduli come Pixie, Tangram e Class::DBI. Veramente apprezzabile il paragrafo "Pratical uses in web applications", che è una stimolante introduzione all'architettura MVC e al framework Maypole. Purtroppo, Catalyst non viene nemmeno menzionato in questo capitolo.

Il quinto capitolo parla di tecniche per l'elaborazione del linguaggio naturale (o NLP, Natural-language processing). Qui Cozens utilizza alcuni moduli della famiglia Lingua::EN per "giocare" con l'inglese. Durante il capitolo viene anche descritto un uso del modulo Algorithm::NaiveBayes per fare il parsing di un feed RSS e calcolarne l'indice di interesse tramite parole chiave. Un metodo simile viene utilizzato anche dai filtri anti-spam.

Il supporto di Unicode è stato introdotto in Perl nella serie 5.8 ed il sesto capitolo ci illustra, oltre ad una breve storia sull'unicode, come maneggiare file in formato UTF-8 sia dal punto di vista dello sviluppo Perl che XS.

Il capitolo sette è dedicato completamente al meraviglioso framework POE. Questo modulo viene spiegato usando due piccoli esempi: un port forward e uno scheletrico web server. La programmazione event-based non mi è mai stata più chiara e POE è un gran bel pezzo di codice. :)

Oggi giorno, soprattutto con i linguaggi dinamici, la parte di testing di un'applicazione complessa è basilare per uno sviluppo sicuro dell'applicazione. Più codice si scrive in fase, meno se ne dovrà scrivere in seguito. Cozens questo lo sa bene e tutte le principali tecniche usate per costruire ambienti di testing sono sviscerate nel capitolo ottavo.

Il nono capitolo tratta di come uno sviluppatore Perl possa usare altri linguaggi all'interno dei propri script per aumentare le performance (o per semplice divertimento) usando Inline::C, Inline::CPR, Inline::Ruby e Inline::Python. Personalmente non conosco a fondo i linguaggi elencati, quindi non posso dare un giudizio oggettivo, ma è rassicurante sapere che in Perl è disponibile anche questa possibilità.

L'ultimo capitolo è intitolato "Fun with Perl". Ora, io non so se il divertimento possa essere considerato come programmazione avanzata, ma sicuramente il divertimento è una componente fondamentale per ogni sviluppatore. Grazie a questo capitolo, possiamo vedere cosa fa un perl hacker nel proprio tempo libero per rilassarsi.

"Dai ad un uomo un pesce; Lo avrai sfamato per un giorno. Insegna a quest'uomo a pescare e lo avrai sfamato per una vita intera". Questo libro segue sicuramente questa filosofia, insegnandoci come pescare in quel grande mare chiamato CPAN. Ogni capitolo di questo libro affronta molti dei problemi pratici che un programmatore affronta ogni giorno, facendolo sempre con esempi reali presi dalla lunga esperienza dell'autore. Questo tipo di esempi sono i migliori per capire l'applicazione dei concetti. Un ottimo libro per tutti quei programmatori Perl smaliziati.