Voir How Hashes Really Work pour une discussion sur ce sujet. En bref, tant que vous citez la clé (q {} non interpolant), vous pouvez utiliser les caractères que vous voulez. En ce qui concerne la réponse de Dana, non, cela ne prendra pas plus de temps pour que des clés plus longues soient appariées: cela prendra infiniment plus de temps pour hacher la clé, mais c'est tout.
Pour référence, c'est la fonction de hachage en Perl 5.10.0:
#define PERL_HASH(hash,str,len)
STMT_START {
register const char * const s_PeRlHaSh_tmp = str;
register const unsigned char *s_PeRlHaSh = (const unsigned char *)s_PeRlHaSh_tmp;
register I32 i_PeRlHaSh = len;
register U32 hash_PeRlHaSh = PERL_HASH_SEED;
while (i_PeRlHaSh--) {
hash_PeRlHaSh += *s_PeRlHaSh++;
hash_PeRlHaSh += (hash_PeRlHaSh << 10);
hash_PeRlHaSh ^= (hash_PeRlHaSh >> 6);
}
hash_PeRlHaSh += (hash_PeRlHaSh << 3);
hash_PeRlHaSh ^= (hash_PeRlHaSh >> 11);
(hash) = (hash_PeRlHaSh + (hash_PeRlHaSh << 15));
} STMT_END
+1 pour l'adresse :) –