Konrad Foerstner wrote:

> Hi Folks!
> 
> My problem: I have a file of ids like a.12.34 or z.9.234 and want to sort
> it into a new file. As the sort function sorts digit by digit I can't use
> it (not so easy). Additionally the data file is quite big (11M) so I don't
> know if it is okay to work with such big array.
> 
> I hope someone could help me on some parts of my problem.
> 
> cu
> 
> Konrad

so you want to sort the first character field and then the second numeric 
field and then the third numeric field, etc right? try something like:

#!/usr/bin/perl -w
use strict;

my @fields = 
qw(a.23.45.12 w.43.65.2.2 k.43.1.6.4 k.1.2.3 k.7.4 c.0243094.8);

print join('.',@$_,"\n") for(sort {$a->[0] cmp $b->[0] ||
                                   $a->[1] <=> $b->[1]}
                             map{[split(/\./)]} @fields);

__END__

prints:

a.23.45.12
c.0243094.8
k.1.2.3
k.7.4
k.43.1.6.4
w.43.65.2.2

the program only sorts it until the second numeric field but you can modify 
it to go any level down. you also mention that the data will be coming from 
a file, so i am sure you can modify the above for that purpose as well. :-)

if you are using [L|U]nix, you will probably want to check out the sort 
program as well. man sort

david

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

Reply via email to