[ { start => 1, end => 1001, file => *FH1 }, { start => 500, end => 2001, file => *FH2 } ] #### for each line $position = getPosition() for $range in @ranges print $range->{FH} $line if (($position > $range->{start}) && ($position < $range->{end})) #### SNP:for my $snp (@SNPs) { my @get_SNPs = split(/\t/, $snp); my $position = $get_SNPs[3]; last SNP if ($position > $end); # stop reading, we're out of range ! if (($position >= $start) && ($position <= $end)) { print OUT "@get_SNPs"; } } #### @array = split /\t/, $string; my $v1 = $array[1]; my $v2 = $array[2];