use strict; use warnings; use autodie; use Text::CSV_XS; my $csv = Text::CSV_XS->new ({ binary => 1, auto_diag => 1 }); open my $fh, "<:encoding(utf-8)", "a.csv"; my @hdr = @{$csv->getline ($fh)}; my @arr; while (my $row = $csv->getline ($fh)) { push @arr, $row; } local $" = "\t"; print "@hdr\n"; print "@$_\n" for sort { $a->[1] <=> $b->[1] } @arr;