IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Perl moderne : 2014

Prenez le contrôle de votre programmation avec le Perl moderne.


précédentsommairesuivant

XIII. Qu'est-ce qui manque ?

Perl n'est pas parfait, mais il est malléable — ne serait-ce que parce qu'aucune configuration n'est idéale pour tous les programmeurs et tous les usages. Certaines fonctionnalités sont disponibles dans les modules standard de Perl. D'autres, plus nombreuses, sont disponibles sur le CPAN. Les programmeurs Perl efficaces profitent pleinement des options à leur disposition.

XIII-A. Défauts manquants

Le processus de conception du langage Perl a toujours essayé de combiner l'utile à l'évolutivité, mais il était impossible de prédire en 1994 l'avenir tel qu'il est aujourd'hui en 2014. Perl 5 a élargi le langage et a rendu le CPAN possible, mais il a également conservé la compatibilité ascendante avec la plupart des programmes Perl écrits avec des versions antérieures, et ce jusqu'à Perl 1 en 1987.
Le meilleur code Perl de 2014 est très différent de celui des années 1994 ou 1987.
Bien que Perl inclue une bibliothèque standard étendue, elle n'est pas exhaustive. Plusieurs des meilleurs modules sont disponibles à l'extérieur du Perl standard, à partir du CPAN (Le CPANLe CPAN LINK interne). La métadistribution Task::Kensho comprend plusieurs autres distributions qui intègrent ce qu'il y a de mieux sur le CPAN. Lorsque vous avez besoin de résoudre un problème, commencez par aller y jeter un coup d'œil.
Cela dit, il y a néanmoins beaucoup de vrais joyaux dans les modules standard de Perl.

XIII-A-1. Le pragma strict

Le pragma strict (PragmasPragmas) vous permet d'interdire ou de réactiver différentes constructions linguistiques qui présentent le risque d'utilisation abusive.

strict interdit les références symboliques, nécessite la déclaration des variables (Portée lexicalePortée lexicale) et interdit l'utilisation des « mots nus » (bareword) non déclarés (Mots nusMots nus). Bien que les références symboliques soient parfois nécessaires (Utiliser et importerUtiliser et importer), l'utilisation d'une variable comme nom de variable rend possibles des erreurs subtiles d'action à distance ou, pire encore, la possibilité d'une validation insuffisante de données saisies par l'utilisateur manipulant des données privées à des fins malveillantes.

Exiger des déclarations de variables permet de détecter les fautes de frappe dans les noms de variables et encourage une utilisation judicieuse de la portée des variables lexicales. Il est plus facile de voir la portée prévue d'une variable lexicale si toutes les variables ont les déclarations my ou our dans la portée appropriée. Le pragma strict a lui-même une portée lexicale. Voir perldoc strict pour plus de détails.

XIII-A-2. Le pragma « warnings »

Le pragma warnings (Gérer les avertissementsGérer les avertissements) contrôle la détection des diverses classes d'avertissements. Il vous prévient si vous tentez de transformer en chaîne de caractères la valeur undef ou d'utiliser le mauvais type d'opérateur sur des valeurs. Il met également en garde sur l'utilisation des fonctions obsolètes.

Les avertissements les plus utiles expliquent que Perl a eu du mal à comprendre ce que veut dire la syntaxe que vous avez employée et a dû deviner la bonne interprétation. Même si Perl devine souvent correctement, la résolution des ambiguïtés vous assurera une exécution correcte de vos programmes.

Le pragma warnings a une portée lexicale. Voir perldoc perllexwarn ou perldoc warnings pour plus de détails.

Si vous utilisez à la fois les warnings et les diagnostics, vous obtiendrez des explications plus complètes pour chaque avertissement émis par Perl sur vos programmes, tout droit sorties de perldoc perldiag. C'est une grande aide pour votre apprentissage de Perl, mais veillez à désactiver diagnostics avant de déployer votre programme, pour éviter que vous ne remplissiez vos journaux ou ne révéliez des informations de débogage aux utilisateurs.

XIII-A-3. IO::File et IO::Handle

Avant Perl 5.14, les descripteurs de fichiers lexicaux étaient des objets de la classe IO::Handle, mais vous deviez charger IO::Handle explicitement avant de pouvoir appeler les méthodes de cette classe. Depuis Perl 5.14, ces descripteurs de fichiers sont instanciés depuis la classe IO::File et Perl la charge pour vous.

Ajoutez use IO::Handle; à votre code exécuté sous Perl 5.12 ou moins si vous faites appel aux méthodes de ces descripteurs.

XIII-A-4. Le pragma « autodie »

Perl vous laisse le soin de traiter les erreurs d'exécution (ou de ne pas le faire). Si vous oubliez de vérifier la valeur de retour de chaque appel à open() par exemple, vous pourriez vous retrouver à essayer de lire un descripteur de fichier fermé — ou pire, à risquer de perdre des données que vous souhaitiez écrire. Le pragma autodie change ce comportement pour vous. Si vous écrivez :

 
Sélectionnez
use autodie;

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

… un échec de la fonction open() signalera une exception. Étant donné que l'approche la plus appropriée à un appel système qui a échoué est de lancer une exception, ce pragma vous économise du code bateau répétitif et vous permet d'avoir l'esprit tranquille si vous ne testez pas la valeur de retour. Voir perldoc autodie pour plus d'informations.

XIII-A-5. Les numéros de version Perl

Si vous rencontrez du code Perl sans savoir quand il a été écrit ou qui l'a écrit, pouvez-vous dire quelle est la version de Perl requise ? Si vous avez beaucoup d'expérience avec Perl, avant ou après la version Perl 5.10, vous pourriez vous souvenir de la version de Perl qui a ajouté la fonction say et quand autodie est entré dans les modules standard de Perl. Sinon, vous pourriez avoir à deviner, éplucher les fichiers de la documentation perldelta ou utiliser CPAN::MinimumVersion depuis le CPAN.

Il n'y a aucune obligation à ajouter à tous les nouveaux programmes que vous écrivez le numéro de la version minimum requise de Perl, mais cela peut clarifier vos intentions. Par exemple, si vous avez testé votre code avec Perl 5.12 et utilisez uniquement des fonctionnalités présentes dans Perl 5.12, écrivez :

 
Sélectionnez
use 5.012;

… ce qui documentera votre intention. Vous rendrez plus simple aux outils automatiques l'identification des fonctionnalités particulières de Perl dans votre code à utiliser ou non. Si quelqu'un utilise plus tard votre programme et prouve qu'il fonctionne sous Perl 5.10, vous pourrez changer le numéro de version sur la base de cette preuve concrète.


précédentsommairesuivant

Licence Creative Commons
Le contenu de cet article est rédigé par chromatic et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Pas d'Utilisation Commerciale - Pas de Modification 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2015 Developpez.com.