use strict; use warnings; use List::Util qw(max min); my @array = (11, 23, 40, 52, 67); my ($minarray, $maxarray); my $lookup = $ARGV[0]; my ($prev, $curr); $minarray = min(@array); $maxarray = max(@array); foreach my $i (@array){ if ($lookup < $minarray or $lookup > $maxarray){ print "$lookup is out of bounds\n"; last; } if ($i == $lookup) { print "Exact match $i\n"; last; } unless ($prev) { $prev = $i; next; } if ($i < $lookup) { $prev = $i; next; } else { $curr = $i; } if ($curr > $lookup) { print "Value $lookup, is between $prev and $curr\n"; last; } } # >perl lookupArray.pl 27 # Value 27, is between 23 and 40