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 :

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)
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 = []).

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)