Un anniversaire à ne pas manquer
Un historique de toutes nos réunions
Nous avons mangé des salades au poulet et au curry
et du boudin avec de la purée.
Nous avons bu de la bière (Leffe et une bière bretonne
dont je n'ai pas retenu le nom),
ainsi que de la vodka. Le repas
était arrosé au vin rosé, offert par Laurent
qui fêtait ainsi son anniversaire.
-
Laurent a évoqué la
version 5.12 de Perl,
qui doit être boring
selon son pumpking.
Lorsque je demande ce qu'il y a comme
nouveautés
dans la 5.12, j'ai l'impression qu'il y en a nettement
moins que tout ce à quoi nous avons eu droit avec
la 5.10. Donc pour moi, la 5.12 aurait dû être
numérotée 5.10.2. La fois précédente où les
nouvelles versions devaient être boring, c'est
quand Nicholas Clark était devenu pumpking.
Il avait instauré un rythme régulier de sorties de version,
quitte à laisser des bugs faute de temps pour les corriger.
Cela ne faisait rien, les bugs seraient corrigés dans la version
suivante, un ou deux mois après. Mais comme il n'y avait
pas de nouveauté importante, Nicholas avait continué la série
des 5.8 avec la
5.8.5,
5.8.6 et ainsi de suite. Alors que je
ne vois pas ce qui a pu provoquer un saut de la 5.10.1
vers la 5.12.0. En fait, il semblerait qu'il y ait une
incompatibilité binaire entre la 5.10.1 et la 5.12,
ce qui justifie ce changement de version.
-
Si la
version 5.8
a apporté un traitement fiable des chaînes
Unicode,
tous les problèmes ne sont pas résolus
pour autant. Ainsi, Charles a eu des problèmes avec
un module Mechanize, qui va récupérer des
chaînes Unicode sur Internet, mais qui renvoie
de l'ISO-8859 au script appelant.
-
De même, on pourrait s'attendre à ce que
HTML::Parser
sache interprêter les entités comme
ou é et les
remplacer par le caractère Unicode correspondant,
mais non, le module les laisse tels quels.
Ce n'est même pas disponible en option
[ En fait, nous nous sommes trompés. La possibilité existe
bel et bien dans HTML::Parser. Voir l'exemple
ci-dessous.
use strict;
use warnings;
use HTML::Parser;
my $analyse = HTML::Parser->new(api_version => 3,
text_h => [ \&texte, "text, dtext" ],
);
$analyse->parse("<div>Il s'élève à toute vitesse</div>");
sub texte {
my ($texte_brut, $texte_decode) = @_;
print "texte brut : $texte_brut\n";
print "texte décodé : $texte_decode\n";
}
Ou alors Charles parlait peut-être de certaines entités qui ne
sont pas traduites alors que d'autres comme é
le sont.
]
-
Un autre
problème
avec HTML::Parser,
c'est l'analyse d'une chaîne simple, sans balise
HTML. Il se trouve que HTML::Parser
ne renvoie pas le dernier mot de la chaîne.
Essayez avec :
use strict;
use warnings;
use HTML::Parser;
my $analyse = HTML::Parser->new(api_version => 3,
start_h => [ \&debut, "self,tagname,attr" ],
text_h => [ \&texte, "dtext" ],
end_h => [ \&fin, "tagname" ],
);
$analyse->parse("Que j'aime à faire apprendre un nombre utile aux sages");
sub debut {
my ($self, $tag, $attr) = @_;
print "début : $tag\n";
}
sub texte {
my ($texte) = @_;
print "texte : $texte\n";
}
sub fin {
my ($tag) = @_;
print "fin : $tag\n";
}
Et maintenant, essayez de lancer deux analyses à la suite :
$analyse->parse("Que j'aime à faire apprendre un nombre utile aux sages");
$analyse->parse("Immortel Archimède, artiste, ingénieur");
Il existe un moyen de détournement très
simple, appeler l'analyse avec
"<div>$chaine</div>".
$analyse->parse("<div>Que j'aime à faire apprendre un nombre utile aux sages</div>");
moyen que j'ai utilisé subrepticement au paragraphe précédent.
HTML 5 - CSS v3
Mongueurs de Paris, le 29 janvier 2021
Copyright © The Paris Perl Mongers, 1999-2024