Thanks for the feedback--maybe I screwed up but what happens for me is that
the ordered array (1) only lists the keys, not the array values the hash key
points to and (2) I still don't get an ordered list of the keys that are put
in the "ordered" array--it comes out un-ordered.  

I took your line and just added a for loop/print for the ordered array and
got "red,yellow,blue, orange, violet, green" only  as the result.

I must be dense but using just a Keys expression can't return the values,
can it??--wouldn't it be better to do a while/each and get both key and
value for the HofA somehow??

-----Original Message-----
From: James Edward Gray II [mailto:[EMAIL PROTECTED] 
Sent: Wednesday, February 18, 2004 6:49 PM
To: Smith Jeff D
Cc: [EMAIL PROTECTED]
Subject: Re: An Old Question on Sorting Hash of Arrays by Array element and
th en by key


On Feb 18, 2004, at 1:58 PM, Smith Jeff D wrote:

> I am trying to sort a hash of arrays that is similar to the example
> below.
> I have a hash of arrays that I want to sort, first by the first 
> element of
> the array, then by the key to the hash and don't care about other 
> elements
> of the array (for sorting and without regard to case.
>
> %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;

I believe that will do it.  See if that gets you going.

James

-- 
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