You'll want to read the entire file into an array of arrays, and then use perl's nice sort function to sort that array, finally writing the data back to the file. Sample code is below:
my @data
while (my $line = <FILE>) {
my @elements = split /,/, $line;
push @data, \@elements; # need to store as ref
}
@data = sort { $$a[2] cmp $$b[2] or $$a[0] <=> $$b[0] }
@data;
# cmp and <=> are string and numerical comparison operators,
# respectively; if the left hand arg is less than the right,
# they return -1, if equal, 0, and otherwise 1, so if the
# 3rd column of the array is the same, we get a 0, which
# triggers the 'or' and the second comparison
open OUTFILE, ">$outfile" or die $!;
foreach my $item (@data) {
print OUTFILE join ',', @$item;
print OUTFILE "\n";
}
-----------------------------------------------------
Dr. Michael K. Neylon - mneylon-pm@masemware.com
||
"You've left the lens cap of your mind on again, Pinky" - The Brain
|