use List::Util qw(min); sub arraycmp { my ($a, $b) = @_; for my $_ (0 .. min($#$a, $#$b)) { my $d = $a->[$_] <=> $b->[$_]; return $d unless $d == 0; } return 0; }