in reply to how do I sort numerically on sections of data that is alphanumeric
Does this work for you?
use strict; use Data::Dumper; my @data; while (<DATA>) { chomp; push @data, [ split '\s', $_ ]; } @data = sort { $a->[1] <=> $b->[1] or $a->[2] <=> $b->[2] } @data; print Dumper \@data; __DATA__ A 00006360 A001002002 000000000.00 A 00006360 A001012012 000000000.00 A 00006360 A001054054 000000000.00 A 00005460 A001102002 000000000.00 A 00007360 A003015015 000000000.00
I'm not sure what you meant by having 'A' in the third column disregarded. If you meant you didn't want it in the data, change the while loop to the following:
while (<DATA>) { chomp; push @data, [ split '\s', $_ ]; $data[ -1 ][ 2 ] = substr( $data[ -1 ][ 2 ], 1 ); }
If you want it included but disregarded in the sort, change the sort to the following:
@data = sort { $a->[1] <=> $b->[1] or substr( $a->[2], 1) <=> substr( $b->[2], 1) } @data;
Cheers,
Ovid
Vote for paco!
Join the Perlmonks Setiathome Group or just click on the the link and check out our stats.
|
|---|