or download this
use List::Util qw(min max);
sub x1{0} sub y1{1} sub x2{2} sub y2{3}
...
ok rect_overlap [10, 10, 30, 30], [15, 15, 20, 20]; # inside
ok rect_overlap [10, 10, 30, 30], [40, 20, 20, 60]; # do
ok rect_overlap [10, 10, 30, 30], [15, 15, 20, 20], [20, 20, 40, 60];
+ # (20,20)