in reply to match with elements in array

Can we assume that your lists will always be contiguous lists of numbers? If so, you can skip the construction itself and just test limits:

#!/usr/bin/perl use strict; use warnings; my @line01 = ([200900, 202543], [202544, 204187], [204188, 205831], [205832, 207475], [207476, 210119], [210120, 211763], [211764, 213407], [213408, 215051], ); my $vector = 206000; for my $i (0 .. $#line01) { if ($vector >= $line01[$i][0] and $vector <= $line01[$i][-1]) { print $i+1 . "\n"; } }

Note that I have swapped from a series of arrays into an array of arrays (see perllol and/or perlreftut) so the testing code does not need to be repeated 8 times.

If the constraints are different than what I've assumed, you can do this a number of ways, like constructing a hash or regular expressions, which will be of varying appropriateness depending on the actual case.

Replies are listed 'Best First'.
Re^2: match with elements in array
by finder003 (Initiate) on May 19, 2010 at 21:59 UTC
    Worked perfectly :) AWESOME! Thanks!