@sorted = sort { $b->[1] <=> $a->[1] || $b->[2] <=> $a->[2] || $b->[3] <=> $a->[3] || $b->[4] <=> $a->[4] || $a->[0] <=> $b->[0]; } @sorted; } use Data::Dumper; print Data::Dumper->Dump([ \@sorted ],[ qw/ *matrix / ]),"\n";