Nkuipers wrote:
> 
> Hello all,

Hello,

> My hash keys look something like this:
> 
> >1234 x5
> 
> So I am thinking a cmp, as opposed to <=> is best.
> 
> What I want is for the keys to be sorted as follows:
> 
> >1 x....
> >2 x....
> >3 x....
> ..
> ..
> ..
> >n x....
> 
> This is what I have in my script at the moment:
> 
> my @sort_this = keys %final_list;
> my @sorted = sort { $a cmp $b } @sort_this;
> for (@sorted) { print OUT "$_\n$final_list{$_}\n" }
> 
> This gives
> 
> >1 x....
> >10 x....
> >100 x....
> >1000 x....
> >1001 x....
> 
> etc.
> 
> Any suggestions?  I'm not asking for you to spell it out for me with code and
> all unless you really want to.  Sorry if this is a dumb question.


This should work, assuming the digits at the start of the key are no
longer then 10.

my @sorted = map { /\0(.+)/ }
             sort
             map { sprintf "%010d%s\0%s", /(\d+)(.+)/, $_ }
             keys %final_list;

print OUT "$_\n$final_list{$_}\n" for @sorted;



John
-- 
use Perl;
program
fulfillment

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

Reply via email to