use Test::More tests => 1; my @unsorted = ( [ 'blah', 'asdf', 'foo', 'bar' ], ['two'], [ 'zzz', 'def', 'ghi' ], ['one'], [ 'mmm', 'def', 'ghi' ], [ 'qqq', 'xyz', 'aaa' ] ); my @wanted = ( ['one'], ['two'], [ 'qqq', 'xyz', 'aaa' ], [ 'mmm', 'def', 'ghi' ], [ 'zzz', 'def', 'ghi' ], [ 'blah', 'asdf', 'foo', 'bar' ] ); my @sorted = sort { my $res; @$a <=> @$b || do { $res = $a->[$_] cmp $b->[$_] and return $res for reverse 0 .. $#{$a} }; } @unsorted; diag "@{$_}\n" for @sorted; is_deeply( \@sorted, \@wanted, 'Sorted array matches expectation.' );