in reply to Re: Re: problem with hash keys
in thread problem with hash keys

Then you can additionally store for each hash the order in which its keys are in:
# ... push @grammar_keys, $1 unless exists $grammar{$1}; $grammar{$1} = $2; # ... print "$k\n" for my $k (@grammar_keys);
(I've also taken the liberty of using lowercase variable names; you should probably use all-uppercase names only for special global variables).

Or you can use a module like Tie::IxHash, which implements hashes with ordered keys just like you want.