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

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

I have an array of hashes:
push @data { yo => mama, bliz => at }
Can I tie the hashes to retrieve their values in insertion order?

Originally posted as a Categorized Question.

Replies are listed 'Best First'.
Re: How do I tie an array of hashes?
by Fastolfe (Vicar) on Sep 21, 2000 at 17:53 UTC
    The items in your array are in insertion order, so what remains is each individual hash. In your example above, you have a list with one element: a standard hashref. Since you can't "tie" an anonymous reference like this, you would need to use the object-oriented abilities of Tie::IxHash instead:
    use Tie::IxHash; push @data, Tie::IxHash->new( yo => mama, bliz => at ); push @data, Tie::IxHash->new( one => two, three => four); print join(", ", keys %{$data[1]}); # one, three
    You can also create separate hashes, tied to Tie::IxHash (per the man page) and push references to each of those tied variables onto @data.