sub arrarycomp { my ($x, $y) = @_; my $arrmin = $#$x; $arrmin = $#$y if $#$y < $arrmin; my $result; for (0 .. $arrmin) { if ($result = $$x[$_] cmp $$y[$_]) { return $result; } } return $#$x - $#$y; } @out = sort {arrarycomp($a, $b)} @in; #### my @in = ( [ "The Cat", "G", "F", "H", "J" ], [ "The", "Dog", "G", "F", "H", "J",], ); #### $VAR1 = [ 'The', 'Dog', 'G', 'F', 'H', 'J' ]; $VAR2 = [ 'The Cat', 'G', 'F', 'H', 'J' ];