my @array = map {my $l = $_; chomp $l; [split /\s/,$l]} ; my @sarray = sort { $a->[2] eq $b->[2] ? $a->[1] <=> $b->[1] : $b->[2] cmp $a->[2] } @array; _ _DATA_ _ name6 22 m name1 17 w name5 16 m name4 14 m name3 20 w name2 18 w