my @a = (1,2,4,8,4,5,6,7,8); # sample data my ($current, $previous); my $tmp_max = 1; my $max = 1; while (@a) { $previous = shift(@a) ; $current = $a[0] or last; if ($previous + 1 == $current) { # or $previous < $current if numbers may increase by more than 1 $tmp_max++; } else { $tmp_max = 1; } $max = $tmp_max if ($tmp_max > $max); } print "$max\n";