use strict; use warnings; my @nums = (1, 5, 6, 8, 15, 20); my $max = 21; my $pad = 1; my %highlight; @highlight{@nums} = (1) x @nums; my @padded; { my %seen; @padded = grep { ! $seen{$_} ++ } grep { $_ >= 1 && $_ <= $max } map { $_ - $pad .. $_ + $pad } @nums; } print $highlight{$_} ? qq{Highlighted: $_\n} : qq{$_\n} for @padded; #### Highlighted: 1 2 4 Highlighted: 5 Highlighted: 6 7 Highlighted: 8 9 14 Highlighted: 15 16 19 Highlighted: 20 21