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;