Lancer Perl 5.12.4 J'obtiens une disparité entre le résultat d'une fonction lorsqu'un hachage est attribué dans l'instruction return ou avant. L'exemple le plus simple est:
perl -e "sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %h=@a;
return %h
}
print "@{[ s1()]}n""
c 2 a 4 b 1
perl -e "sub s1 {
my @a=qw/b 1 c 2 a 3 a 4/;
my %h=@a;
return %h=@a
}
print "@{[ s1()]}n""
c 2 c 2 a c
Pourquoi (ré) attribuer à un hachage dans l'instruction de retour (2e exemple) altère-t-il le hachage renvoyé?
Réponses:
2 pour la réponse № 1À cause d'un bug. Il semble avoir été corrigé dans 5.14.0. (Présent dans 5.12.4. Non présent dans 5.14.0)
Cas de test minimal:
perl -E"say %h = qw/b 1 c 2 a 3 a 4/"