>perl -wMstrict -le "my @ra; $#ra = 10; @ra[3, 5, 7] = (33, 55, 77); ;; use Data::Dumper; print Dumper fetch(3, \@ra); print Dumper fetch(6, \@ra); ;; sub fetch { my ($i, $ar) = @_; return [ $i, $ar->[$i] ] if exists $ar->[$i]; return [ $i-1, $ar->[$i-1] ], [ $i+1, $ar->[$i+1] ]; } " $VAR1 = [ 3, 33 ]; $VAR1 = [ 5, 55 ]; $VAR2 = [ 7, 77 ];