>perl -wMstrict -le "use List::Util qw(sum); ;; my $s = 'r1y2g3g4y2r4r3y5y3g3g6g2r1'; my $r = 'r 1 y 2 g 7 y 2 r 7 y 8 g 11 r 1 '; ;; $s =~ s{ (([[:alpha:]]) \d+ (?: \2 \d+)*) } {$2 ${ \sum $1 =~ /\d+/g } }xmsg; print qq{'$s'}; ;; $s eq $r or die 'not what was wanted'; " 'r 1 y 2 g 7 y 2 r 7 y 8 g 11 r 1 '