Edit:
Anche se un hash normale ha un ordinamento coerente, nel caso di un tied hash l'ordine delle chiavi è non ben definito, in quanto è controllata dall'utente!
Anche se l'ordine tasto cancelletto non cambia, probabilmente dovrebbe riconsiderare il motivo per cui è necessario fare questo.
Forse è possibile elaborare l'hash in un passaggio anziché in due?
È necessario salvare le chiavi di hash in un array come pratica di programmazione difensiva, a meno che la dimensione dei dati sia sufficientemente ampia da duplicare il problema. Come bonus, puoi anche ordinare facilmente l'elenco e elaborare l'hash in un ordine ben definito. Per esempio,
my @keys = sort keys %myHash;
Questo consente di evitare eventuali problemi con la modifica del hash, dal momento che l'ordine di matrice non cambierà mai a meno che non si desidera.
Se non lo fai, devi stare molto attento a non fare nulla che modifichi l'hash, altrimenti l'ordine degli elementi cambierà. Guarda nel modulo Readonly per assicurarti che questo hash non venga mai modificato.
fonte
2009-08-10 19:38:35
Solo per curiosità - per cosa ti serve questa proprietà? – hillu
Chi sta votando tutto e niente? – erjiang