Why the question mark? Tie::IxHash is the canonical module for this kind of job.
As an interesting sidenote to the OP: (s)he pretty much described how it works:
I could sorta do it with a pair of arrays and an index variable, but I like being able to reference an element by its key.
Well: the object behind the tied hash comprises of a pair of arrays, one for the keys and one for the values, and a hash, which points towards the index in these arrays for any key.
An alternative implementation, which would likely be a little more compact, would be to use just one hash and one array. For example, the hash could work in the normal way, and the array would contains the ordered keys. But there are other schemes.
| [reply] |