my @strings = qw( aaabbbb ab abb aabb aaabb aabbb ); my $a_counter; my $b_counter; for my $string ( @strings ) { print "In $string there were $a_counter 'a's and $b_counter 'b's.\n" if ( $string =~ /(a(?{$a_counter ++; } ))+(b(?{$b_counter ++;}))+/ ); }