http://www.perlmonks.org?node_id=613583


in reply to how to count matches

When you did

my $d = ($n =~ /A/g)
the global match (triggered by /g) was done at scalar context. In this case it finds a single match or fails. So $d will return 1 or 0.

To do what you want, you need to set a list context and then count the matches.

my $n = "ABCDABDIDAOFOOFAA" ; my @matches = ($n =~ /A/g); my $d = @matches; print "matches $d";
will output "matches 5".