<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:atom="http://www.w3.org/2005/Atom" >
<channel>
	<title><![CDATA[BOL: Check overlapping range with Perl]]></title>
	<link>https://bioinformaticsonline.com/snippets/view/31094/check-overlapping-range-with-perl?</link>
	<atom:link href="https://bioinformaticsonline.com/snippets/view/31094/check-overlapping-range-with-perl?" rel="self" type="application/rss+xml" />
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">https://bioinformaticsonline.com/snippets/view/31094/check-overlapping-range-with-perl</guid>
	<pubDate>Fri, 24 Feb 2017 05:09:56 -0600</pubDate>
	<link>https://bioinformaticsonline.com/snippets/view/31094/check-overlapping-range-with-perl</link>
	<title><![CDATA[Check overlapping range with Perl]]></title>
	<description><![CDATA[<code>#!/usr/bin/perl

use strict;
use warnings;

my @ranges = 0;
push @ranges, $ranges[-1] + 1 + int rand 200 for 1..10000;
my @tests = map int rand $ranges[-1], 0..1000000;
match (\@ranges, \@tests);

sub div {
    my ($border, $tests) = @_;
    my ($lt, $ge) = ([], []);
    push @{$_ &lt; $border ? $lt : $ge}, $_ for @$tests;
    ($lt, $ge);
}

sub match {
    my ($ranges, $tests) = @_;
    if (@$ranges == 1) {
        if (@$tests) {
            print &quot;tests in range $ranges-&gt;[0]:\n&quot;, join(&quot;, &quot;, @$tests), &quot;\n&quot;;
        }
        else {
            print &quot;range $ranges-&gt;[0] is empty\n&quot;;
        }
    }
    else {
        my $pivot = int((@$ranges + 1)/ 2);
        my ($lt, $ge) = div($ranges-&gt;[$pivot], $tests);
        match([@{$ranges}[0..$pivot-1]], $lt);
        match([@{$ranges}[$pivot..$#$ranges]], $ge);
    }
}</code>]]></description>
	<dc:creator>Jit</dc:creator>
</item>

</channel>
</rss>