Prefazione

Perl Moderno è uno dei modi per descrivere come lavorano i migliori programmatori Perl 5: usano gli idiomi del linguaggio; sfruttano CPAN; hanno un senso estetico e un'arte che gli permettono di scrivere codice potente, manutenibile, scalabile, conciso ed efficace. Anche voi potete imparare a lavorare così!

Perl ha fatto la sua comparsa nel 1987 come semplice strumento per gli amministratori di sistema. Sebbene agli inizi si proponesse di occupare una nicchia tra lo scripting shell e la programmmazione C, col tempo è diventato un potente linguaggio general-purpose. Perl 5 ha una solida storia di pragmatismo e un brillante futuro di ulteriori raffinamenti e migliorie Perl 6 è una reinvenzione della programmazione basata sui solidi principi base del Perl, ma è un argomento per un altro libro..

Durante la ormai lunga storia di Perl—specialmente i 17 anni di Perl 5—la nostra percezione di che cosa sia l'eccellenza per un programma Perl è cambiata. Se da una parte potete scrivere programmi efficaci senza sfruttare tutto ciò che il linguaggio vi offre, dall'altra la comunità Perl mondiale ha inventato, preso a prestito, migliorato e raffinato molte idee e le ha rese disponibili a chiunque le voglia conoscere.

Usare Perl Moderno

Il modulo Modern::Perl, disponibile su CPAN (CPAN), richiede a Perl di segnalare l'uso di costrutti ambigui e errori di battitura, e attiva nuove funzionalità introdotte nelle versioni recenti di Perl 5. A meno di indicazioni contrarie, i segmenti di codice presentati suppongono sempre un programma basato sul seguente schema basilare:

    #!/usr/bin/env perl

    use Modern::Perl 2011;
    use autodie;

...che equivale a:

    #!/usr/bin/env perl

    use 5.012;      # implica "use strict;"
    use warnings;
    use autodie;

Alcuni esempi utilizzano funzioni di test come ok(), like() e is() (Testing). Lo schema di questi programmi è il seguente:

    #!/usr/bin/env perl

    use Modern::Perl;
    use Test::More;

    # il codice dell'esempio va qui

    done_testing();

Al momento della scrittura di questo libro, la famiglia di versioni stabili di Perl 5 è Perl 5.14. Gli esempi in questo libro funzionano al meglio con Perl 5.12.0 o successivi. Molti esempi funzionano, con piccole modifiche, anche con versioni di Perl 5 più datate, ma incontrerete difficoltà maggiori con le versioni precedenti alla 5.10.0.

Se non avete un'installazione di Perl 5 (o ne avete una vecchia versione), potete installare voi stessi una nuova release. Gli utenti Windows possono scaricare Strawberry Perl da http://www.strawberryperl.com/ oppure ActivePerl da http://www.activestate.com/activeperl. Gli utenti di altri sistemi operativi che hanno già Perl 5 installato (insieme a un compilatore C e agli altri tool di sviluppo), possono iniziare con l'installare il modulo CPAN App::perlbrew Si veda http://search.cpan.org/perldoc?App::perlbrew per le istruzioni di installazione..

perlbrew vi consente di installare e gestire più versioni di Perl 5. In questo modo, potete passare da una versione di Perl 5 all'altra e, inoltre, potete installare Perl 5 e i moduli CPAN nella vostra home directory senza interferire con la versione di Perl di sistema. Se avete mai dovuto pregare il vostro amministratore di sistema per avere il permesso di installare del software, vi dovrebbe essere chiaro come questo vi possa semplificare, e di molto, la vita.

Riconoscimenti

Questo libro non sarebbe stato possibile senza le domande, i commenti, i suggerimenti, i consigli, la saggezza e l'incoraggiamento di tantissime persone. In particolare, l'autore e l'editore vogliono ringraziare:

John SJ Anderson, Peter Aronoff, Lee Aylward, Alex Balhatchet, Ævar Arnfjörð Bjarmason, Matthias Bloch, John Bokma, Vasily Chekalkin, Dmitry Chestnykh, E. Choroba, Tom Christiansen, Anneli Cuss, Paulo Custodio, Steve Dickinson, Kurt Edmiston, Felipe, Shlomi Fish, Jeremiah Foster, Mark Fowler, John Gabriele, Andrew Grangaard, Bruce Gray, Ask Bjørn Hansen, Tim Heaney, Graeme Hewson, Robert Hicks, Michael Hind, Mark Hindess, Yary Hluchan, Daniel Holz, Mike Huffman, Gary H. Jones II, Curtis Jewell, Mohammed Arafat Kamaal, James E Keenan, Kirk Kimmel, Yuval Kogman, Jan Krynicky, Michael Lang, Jeff Lavallee, Moritz Lenz, Andy Lester, Jean-Baptiste Mazon, Josh McAdams, Gareth McCaughan, John McNamara, Shawn M Moore, Alex Muntada, Carl Mäsak, Chris Niswander, Nelo Onyiah, Chas. Owens, ww from PerlMonks, Jess Robinson, Dave Rolsky, Gabrielle Roth, Jean-Pierre Rupp, Eduardo Santiago, Andrew Savige, Lorne Schachter, Steve Schulze, Dan Scott, Alexander Scott-Johns, Phillip Smith, Christopher E. Stith, Mark A. Stratman, Bryan Summersett, Audrey Tang, Scott Thomson, Ben Tilly, Ruud H. G. van Tol, Sam Vilain, Larry Wall, Lewis Wall, Colin Wetherbee, Frank Wiegand, Doug Wilson, Sawyer X, David Yingling, Marko Zagozen, harleypig, hbm e sunnavy.

Gli errori rimanenti sono colpa esclusiva della testardaggine dell'autore.

Traduzione

La traduzione italiana è di Gianluca Torta, sponsorizzata dall'Associazione di Promozione Sociale Perl.it.