sub intersect { my ($a,$b,$c,$d) = @_; my ($n1,$n2) = ([$a,$b],[$c,$d]); if($a > $c){ my $t = $n1; $n1 = $n2; $n2 = $t; } ($a,$b,$c,$d) = (@n1,@n2); return ($b-$c)*($b>$c)-($b-$d)*($b>$d); } #### sub intersect3 { my ($a,$b,$c,$d) = map {($_->[0],$_->[1])} sort { $a->[0] <=> $b->[0] } ([@_[0,1]],[@_[2,3]]); return ($b-$c)*($b>$c)-($b-$d)*($b>$d); }