... my $csv = Text::xSV->new(); my %results; my $count; $csv->bind_header(); while ($csv->get_row()) { @row =$csv->extract(@headers); $results{$count++} = [ @row ] unless ($notfound); } $self->{results} = \%results; ... my $results = $self{results}; foreach (sort { return $$results{$a}[0] <=> $$results{$b}[0]; } keys %$results) { for (my $i=0; $i<@$headers; $i++) { print $$results{$_}[$i]."\n"; } }