use List::Util qw[ sum ]; my @ranges = ('15', '28-31', '3-4', '40', '17-19'); my $tMin = sum map{ /^(\d+)/ } @ranges; my $tMax = sum map{ /(\d+)$/ } @ranges; print "$tMin : $tMax";; 103 : 109