5.8.8 le 31 janvier 2006
5.10.0 le 18 décembre 2007, 20e anniversaire de Perl 1.000
5.8.9 le 14 décembre 2008
5.10.1 le 23 août 2009
5.12.0 le 12 avril 2010
5.12.1 le 16 mai 2010
présentation de Nicholas Clark à YAPC::Europe 2004, Belfast
Why Perl 5.8.6 is boring (and why you should be excited by this)
Perl 5.12.. vraiment pas excitant
...
each
marche sur les tableaux
@a = qw< paff zap thwapp >; while (my ($key, $value) = each @a) { print "$key : $value\n" }
0 : paff 1 : zap 2 : thwapp
delete local
destruction locale d'une valeur de hash
$, = " "; %color = ( red => "#FF0000", green => "#00FF00", blue => "#0000FF" ); print %color; { delete local $color{red}; print %color; } print %color
green #00FF00 blue #0000FF red #FF0000 green #00FF00 blue #0000FF green #00FF00 blue #0000FF red #FF0000
package App::Whatever v1.42.0
analysé à la compilation, de la même manière que use NAME VERSION
$VERSION
est un objet, et impose un format strict
formalisation de la syntaxe d'une version
format strict : nombre décimal position entier ou décimal sans exponentiation (1.42), ou v-string d'au moins 3 composantes décimales (v1.23.45)
format laxiste : pareil plus v-strings de moins de 3 composantes, ainsi qu'une composante alpha, séparée par une espace soulignée (1.42_03)
fonctions version::is_strict()
et version::is_lax()
when
postfixégiven ($something) { $abc = 1 when /^abc/; $just_a = 1 when /^a/; $other = 1; }
for (@names) { admin($_) when [ qw/Alice Bob/ ]; regular($_) when [ qw/Chris David Ellen/ ]; }
when
opérateurs flip-flop ..
et ...
maintenant évalués en contexte booléen
when (/^=begin/ .. /^=end/) { # ... }
when (expr1 // expr2)
évalue maintenant en contexte booléen si expr1
est booléenne
\N
inverse de \n
ne pas confondre avec \N{name}
strict
impliciteuse 5.12.0
charge implicitement use strict
et use features ':5.12'
avertissements émis par défaut sur les fonctionnalités considérées obsolètes
nouvelle catégorie deprecated
pour les désactiver
no warnings "deprecated"
beaucoup de nouveaux messages de diagnostic
les fonctions internes passent 2038
voir aussi Time::y2038
sur le CPAN
isa()
plus rapide grâce à un cache interne
linéarisation C3 40% plus rapide pour les classes à héritage simple
méthodes DESTROY
vides ignorées
keys
sur les hashes vides plus rapide
if (%hash)
maintenant plus rapide que if (keys %hash)
inversion sur-place d'un tableau (@a = reverse @a
) beaucoup plus rapide
Unicode 5.2.0
support de toutes les propriétés de caractères (cf perluniprops)
surcharge vers qr//
(par overload
)
mots-clés extensibles grâce à une API spécifique
voir XS::APItest::KeywordRPN
pour un exemple
support DTrace
autodie
Compress::Raw::Bzip2
parent