use Modern::Perl '2014'; use Number::Interval; use List::Util qw/first/; # FILE1 data emulation my @FILE1 = qw/99269 550 100 126477 1700/; my @interval_objects; while () { chomp; my ($start, $end, undef) = split; push @interval_objects, Number::Interval->new( IncMax => 0, IncMin => 0, Min => $start, Max => $end, ); } for my $datapoint (@FILE1) { my $found = first {$_->contains($datapoint)} @interval_objects; say "$datapoint is in $found" if $found; } # FILE2 data emulation __DATA__ 517 1878 forward 700 2500 forward 2156 3289 forward 99000 100000 forward 22000 23000 backward