use List::Util qw/max min/; my @result = map max($s1,$a[$_])..min($s2,$b[$_]), 0..$#a; #### my @result = map max($s1,$_->[0])..min($s2,$_->[1]), @AoA;