my @nums = (1, 5, 6, 8, 15, 20); my $max_idx = 21; my $pad = 1; my @hilite = @nums; my $hilite = shift @hilite; my $i = -1; for my $n (@nums) { for my $c ($n-$pad .. $n+$pad) { if ($c > $i) { last if $c > $max_idx; $i = $c; if ($i == $hilite) { print "I=$i\n"; $hilite = shift @hilite; } else { print " i=$i\n"; } } } }