use Set::IntSpan; $TM_part1="25-40,74-93,95-120,130-149"; $TM_part2="31-47,84-99,107-123,137-151"; @split_TM1 = split("\t", $TM_part1); @split_TM2 = split("\t", $TM_part2); for ($i=0; $i<=$#split_TM1; $i++) { $tm_range1 = $split_TM1[$i]; $tm_range2 = $split_TM2[$i]; $set1 = new Set::IntSpan $tm_range1; $set2 = new Set::IntSpan $tm_range2; $u_set = intersect $set1 $set2; } print "Union of strings:".$u_set."\n";