in reply to array of arrays or not

If your intervals are potentially long, then I'd suggest the array of array approach because it avoids constructing long lists of elements. You can produce that array of arrays with:
my @interval_arrays = map [$a[$_], $b[$_]], 0..$#a;
And then you can intersect with your interval and get a result in the same format with:
my @intersected_arrays = map { my $min = $s1 < $_->[0] ? $_->[0] : $s1; my $max = $s2 > $_->[1] ? $_->[1] : $s2; $min <= $max ? [$min, $max] : (); } @interval_arrays;