%HofA = (orange=>['ZZZ', 'ANDY'],
   red=>['AAA', 'AL'],
   blue=>['mmm','Betty'],
   yellow=>['aaa', 'ZEUS'],  
   green=>['DDD','Mary Joe'],
   violet=>['MMM','Hugo']
);

my @ordered_keys = sort { $HofA{$a}[0] cmp $HofA{$b}[1]
                                   ||
                                   $a cmp $b } keys %HofA;


foreach $value (@ordered_keys) { print "$value\n"; }



FYI:


Perl Cookbook - 5.4. Traversing a Hash

Problem -- You want to perform an action on each entry (i.e., each key-value pair) in a hash.

Solution -- Use each with a while loop:

while(($key, $value) = each(%HASH)) {
    # do something with $key and $value
}

Or use keys with a foreach loop, unless the hash is potentially very large:

foreach $key (keys %HASH) {
    $value = $HASH{$key};
    # do something with $key and $value
}

-Sx-

--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>




Reply via email to