my @list; my ($first, $last) = (undef, undef); NUM: foreach my $num (@read) { unless (defined $first) { $first = $last = $num; next NUM; } if ($num > ($last + 1)) { push @list, ($last > $first ? "$first-$last" : $first); $first = $last = $num; next NUM; } $last = $num; } push @list, ($last > $first ? "$first-$last" : $first) if defined $first;