http://qs321.pair.com?node_id=83567


in reply to Idiom for looping thru key/value pairs

The CPAN module Tie::DxHash will allow you to make a hash that retains the order the keys were entered, and allows duplicate keys as well.

Here's a short example to show you how simple it's usage is:

use Tie::DxHash; tie my %hash, 'Tie::DxHash'; %hash = ( a => 1, a => 2, b => 2, b => 3, );

An interesting thing to note is that in the assignment to %hash the duplicate keys are not clobbered.

You can then iterate over this hash using while/each or a foreach/keys, and the elements will be returned in the order they were inserted into the hash.