Cosa Manca

Perl5 non è perfetto, ma è malleabile—in parte perché non esiste un'unica configurazione ideale per ogni programmatore e ogni obiettivo. Alcuni comportamenti utili sono disponibili nelle librerie distribuite con Perl. Altri sono disponibili su CPAN. La vostra efficacia come programmatore Perl dipende da quanto sapete avvantaggiarvi di queste aggiunte.

Default Mancanti

La progettazione di Perl 5 ha tentato di anticipare le nuove direzioni del linguaggio, ma era altrettanto impossibile predire il futuro nel 1994 come lo è nel 2011. Perl 5 ha espanso il linguaggio, ma è rimasto compatibile con Perl 1 del 1987.

Il miglior codice Perl 5 scritto nel 2011 è molto diverso dal miglior codice Perl 5 scritto nel 1994 e dal miglior codice Perl 1 scritto nel 1987.

Sebbene Perl 5 sia distribuito con una ricca libreria, essa non è onnicomprensiva. Molti dei migliori moduli Perl 5 sono distribuiti su CPAN (CPAN) anziché insieme a Perl. La meta-distribuzione Task::Kensho include svariate altre distribuzioni che rappresentano il meglio che CPAN abbia da offrire. Dateci un'occhiata come prima cosa ogni volta che dovete risolvere un problema.

Ciò detto, alcune direttive e moduli distribuiti con Perl sono indispensabili ad ogni programmatore Perl serio.

La direttiva strict

La direttiva strict (Direttive) vi permette di disattivare (e ri-attivare) vari costrutti potenti del linguaggio che si prestano ad abusi involontari.

strict proibisce i riferimenti simbolici, richiede che le variabili siano dichiarate (Scope Lessicale) e proibisce l'uso di bareword non dichiarate (Bareword). Anche se l'uso occasionale dei riferimenti simbolici può essere necessario per manipolare le tabelle dei simboli (Uso e Importazione), l'uso di una variabile come nome di variabile offre il fianco a errori insidiosi di azione a distanza—o, peggio ancora, alla possibilità di manipolazione di strutture dati interne per fini illeciti da parte di input utente scarsamente validato.

Richiedere che le variabili siano dichiarate aiuta a rilevare errori di battitura nei nomi delle variabili e incoraggia la definizione di variabili lessicali negli scope appropriati. È molto più facile capire qual è lo scope che si intende associare a una variabile lessicale se tutte le variabili hanno dichiarazioni my e our nello scope appropriato.

strict ha un effetto lessicale basato sullo scope durante la compilazione del suo uso (Uso e Importazione) e della sua disattivazione (con no). Vedete perldoc strict per maggiori dettagli.

La Direttiva warnings

La direttiva warnings (Gestione dei Warning) controlla la generazione delle varie classi di warning in Perl 5, come il tentativo di convertire in stringa il valore undef o l'uso del tipo sbagliato di operatore su certi valori. Genera anche warning relativi all'uso di funzionalità deprecate.

I warning più utili sono quelli che spiegano che Perl ha incontrato difficoltà a interpretare le vostre intenzioni e ha dovuto tentare di indovinare l'interpretazione giusta. Sebbene spesso Perl ci azzecchi, una disambiguazione da parte vostra garantisce che i vostri programmi funzionino correttamente.

La direttiva warnings ha un effetto lessicale sullo scope durante la compilazione del suo uso o disattivazione (con no). Vedete perldoc perllexwarn e perldoc warnings per maggiori dettagli.

Chiedere altro Aiuto

Combinate use warnings con use diagnostics per ricevere messaggi diagnostici più estesi per ogni warning presente nei vostri programmi. Questa diagnostica estesa è documentata in perldoc perldiag. Questo comportamento è particolarmente utile quando imparate Perl. Disattivatelo prima di distribuire il vostro programma, perché produce un output verboso che potrebbe riempire i vostri file di log ed esporre troppe informazioni agli utenti.

IO::File e IO::Handle

Prima di Perl 5.14 i filehandle lessicali erano oggetti della classe IO::Handle, ma dovevate caricare esplicitamente IO::Handle prima di poter chiamare dei metodi su di essi. A partire da Perl 5.14, i filehandle lessicali sono istanze del modulo IO::File che Perl carica per voi.

Aggiungete IO::Handle al codice da eseguire in Perl 5.12 o versioni precedenti se volete chiamare dei metodi sui filehandle lessicali.

La direttiva autodie

Perl 5 lascia alla vostra responsabilità gestire (o ignorare) gli errori. Per esempio, se non fate attenzione a controllare il valore di ritorno di ogni chiamata a open() potreste tentare di leggere da un filehandle chiuso—o, peggio ancora, perdere dati che tentate di scriverci. La direttiva autodie modifica questo comportamento di default. Se scrivete:

    use autodie;

    open my $fh, '>', $file;

... un fallimento della chiamata a open() solleverà un'eccezione. Dato che la reazione più appropriata al fallimento di una chiamata di sistema è quella di sollevare un'eccezione, questa direttiva può rimuovere molto codice ripetitivo dal vostro programma e garantirvi la tranquillità di sapere che non non avete dimenticato di controllare un valore di ritorno.

Questa direttiva viene distribuita con Perl 5 a partire dalla versione 5.10.1. Vedete perldoc autodie per maggiori informazioni.