use List::Util qw( min max ); sub overlap { my @intervals = @_[0, 1]; my $left = max( map $_->[ 0 ], @intervals ); my $right = min( map $_->[ 1 ], @intervals ); return max( 0, $right - $left ); } ####