Bonjour à tous,
Je n'ai pas de question particulière, mais j'ai trouvé un bug dans un de mes programmes dû à une auto-vivification de hash à laquelle je ne m'attendais pas du tout. Habituellement, l'auto-vivification concerne la création de clés de hash automagiquement lors de leur accès en lecture ou en écriture (par un déréférencement de hash).
Ici, c'est un hash vide à a été créé à partir du néant :
Pour moi, à ce stade, ce n'est plus une feature, c'est un bug (keys %$hash devrait lever une exception car $hash n'est pas une référence à un hash, comme il le fait si j'initialise my $hash = []).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my $hash; # contient undef say keys %$hash; # pas d'erreur say $hash; # contient {} (hash anonyme vide)
Bonne journée à tous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 $ perl -E 'my $h;print $h // "UNDEF", " => ";keys %$h;$h and say $h // "UNDEF"' UNDEF => HASH(0x8002bca8)
Partager