Rafaël, pumpking de Perl 5.10, explique quelles seront les nouveautés de cette nouvelle version majeure de Perl 5, attendue depuis plusieurs années. Plusieurs sont d'ailleurs des fonctionnalitées importées de Perl 6, telle le defined-or qui va permettre de remplacer du code comme defined $a ? $a : $b par le plus concis $a // $b. Très pratique en particulier pour mettre une valeur par défaut : $value //= $default
given est un genre de switch, mais en plus puissant car il utilise la magie du smart match qui permet de comparer n'importe quel type de données entre elles. Voir perlsyn section Switch statements pour plus de détails.
Autres nouveautés : on peut déclarer des variables d'état avec state (comme static en C), $_ est maintenant lexical, on dispose de blocs UNITCHECK exécutés juste après la compilation. On peut contrôler l'activation de ces fonctionnalités avec la pragma features. On peut d'ailleurs maintenant écrire ses propres pragma lexicales (voir encoding::source sur le CPAN à titre d'exemple).
Gros chantier de cette version de Perl, les expressions régulières ont été profondément améliorées. Ainsi, on peut écrire des expressions récursives, on peut nommer les tampons de capture et donc les retrouver plus facilement, on dispose de nouveaux verbes de contrôle du retour arrière, des nouveaux quantificateurs possessifs (?+, *+, ++), de l'assertion keep K pour trouver du texte sans y toucher. En interne, le moteur a été dérécursé, faisant ainsi sauter toutes les limitations et bugs qui pesaient dessus, et de nouvelles optimisations (trie et Aho-Corasick) ont été intrégrées.
Perl 5.10 offrira aussi un meilleur support des nouvelles techniques d'objets retournés avec le module Hash::Util::FieldHash. Plus généralement, cette version est plus rapide et prend moins de mémoire, plusieurs structures internes ayant été retravaillées, et offre en plus des messages d'erreurs plus explicites.
Rafaël Garcia-Suarez