use strict; use warnings; use Data::Dumper; my @array = (1..5, 8..10, 15..30, 35..40); my @bucket; my $j = 0; for my $k (0 .. $#array) { if ($array[$k] == $array[$k+1] - 1) { push @{ $bucket[$j] }, $array[$k]; } else { $j++; } } my @ip = (sort { $#$b <=> $#$a } @bucket)[0]; print Dumper \@ip;