use Set::Infinite; my @array = ( ['NM_144963','2713','4091'], ['NM_144963','1949','2712'] ); my $set = Set::Infinite->new->integer; $set = $set->union( $_->[1], $_->[2] ) for @array; print "Set: $set, Size: ",$set->size," Length: ",$set->span->size,"\n"; # Set: [1949..4091], Size: 2142 Length: 2142 @array = ( ['NM_176827','618','710'], ['NM_176827','621','710'], ['NM_176827','622','692'], ['NM_176827','629','710'] ); $set = Set::Infinite->new->integer; $set = $set->union( $_->[1], $_->[2] ) for @array; print "Set: $set, Size: ",$set->size," Length: ",$set->span->size,"\n"; # Set: [618..710], Size: 92 Length: 92