in reply to Complex hash sorting
How can I sort the hash by any of those delimiters? I can sort $key, but that doesn't do the job. I need to be able to print the sorted hash by ANY bit of information.
Then a hash is probably not the data structure you want. Try an array of arrays instead. You know what is supposed to be stored in each field, right?
So the idea is that you put everything into a data structure like this (using the split function):
#!/usr/bin/perl use strict; use warnings; # an array: 0=name, 1=number, 2=city, 3=state, 4=zip my @customers = ( [ 'nye, bill','39','Somehere in Cali','Colombia','12345' ], [ 'simpson, homer','36','Springfield', 'OR', '23456' ], [ 'rubble, barney','31','Bedrock','cartoon location','33456' ] ); # set to the array field you want my $field = '0'; my @sorted = sort { $a->[$field] cmp $b->[$field] } @customers; map { print $_->[$field] . "\n" } @sorted; # OUTPUT nye, bill rubble, barney simpson, homer
Of course you can tweak this to print out what ever you want. This would be best as a subroutine to which you pass the sort field number, IMO.
--
Allolex
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re: Complex hash sorting
by parv (Parson) on Feb 01, 2004 at 09:28 UTC |