yeah, i new this was tricky.

my hash keys / values have uneven names so i cant use a sort routine directly. thats 
why i would like to get the key / values in the same order as they are in the 
hashtable file.

whats the name of that hash modules?

:o)

martin


On Tue, Feb 26, 2002 at 10:28:16AM -0000, John Edwards wrote:
> hash keys are stored unsorted. If you have the following hash
> 
> %test = (     one => 1,
>               two => 2,
>               three => 3);
> 
> and print out the hash key/value pairs.
> 
> foreach $key (keys %test) {
>       print "$key is $test{$key}\n";
> }
> 
> you will find they don't come out in the same order as they were stored.
> 
> You can perform a sort on the keys to arrange them in order
> 
> foreach $key (sort keys %test) {
>       print "$key is $test{$key}\n";
> }
> 
> or you can reverse the hash, making the values the keys, and sort on the new
> keys
> 
> %reversed = reverse %test;
> 
> foreach $key (keys %reversed) {
>       print "$key is $reversed{$key}\n";
> }
> 
> In doing this though, you must be aware that you will lose any data that has
> identical values. For example
> 
> %test = (     one => 1,
>               two => 2,
>               three => 3,
>               alpha => 1,
>               beta => 2,
>               gamma => 3);
> 
> %reversed = reverse %test;
> 
> foreach $key (keys %reversed) {
>       print "$key is $reversed{$key}\n";
> }
> 
> will print out
> 
> 1 is one
> 2 is two
> 3 is three
> 
> There is probably another/better way of doing this using the comparison
> operator <=>, but I don't know it. There is also a module available that
> lets you store and retrieve hashes in a fixed order.
> -----Original Message-----
> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]]
> Sent: 26 February 2002 09:16
> To: [EMAIL PROTECTED]
> Subject: sort order of hash keys
> 
> 
> hi
> 
> 
> i would like to know if theres a smart way to unwind a hashtable so that
> the key / value pairs comes out in the same order as they are in the table.
> 
> :o)
> 
> martin
> -- 
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 
> --------------------------Confidentiality--------------------------.
> This E-mail is confidential.  It should not be read, copied, disclosed or
> used by any person other than the intended recipient.  Unauthorised use,
> disclosure or copying by whatever medium is strictly prohibited and may be
> unlawful.  If you have received this E-mail in error please contact the
> sender immediately and delete the E-mail from your system.
> 
> 

-- 

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to