use strict; use warnings; my @ids = (1, 3, 4, 12, 41, 43, 44); my $id = 4; my $prev_id = 'undef'; my $next_id = 'undef'; for (my $i = 0; $i < scalar(@ids); ++$i) { if ($ids[$i] == $id) { $prev_id = $ids[$i-1] if ($i > 0); $next_id = $ids[$i+1] if ($i+1 < scalar(@ids)); last; } } print qq(ID: $id => NEXT: $next_id => PREV: $prev_id\n);