I\'m sure I\'ve done this in the past and there is something small I\'m forgetting, but how can I sort a CSV file on a certain column? I\'m interested in answers with and wi
As CSV is a pretty complex format, it is better to use a module that does the work for us.
Following is an example using the Text::CSV module:
#!/usr/bin/env perl
use strict;
use warnings;
use constant AGE => 1;
use Text::CSV;
my $csv = Text::CSV->new();
my @rows;
while ( my $row_ref = $csv->getline( \*DATA ) ) {
push @rows, $row_ref;
}
@rows = sort { $a->[AGE] <=> $b->[AGE] } @rows;
for my $row_ref (@rows) {
$csv->combine(@$row_ref);
print $csv->string(), "\n";
}
__DATA__
name,25,female
name,24,male
name,27,female
name,21,male