Perl FAQ 4.24: How can I count the number of occurrences of a substring within a

Perl FAQ 4.24

How can I count the number of occurrences of a substring within a

string?

If you want a count of a certain character (X) within a string, you can use the tr/// function like so:

    $string="ThisXlineXhasXsomeXx'sXinXit":
    $count = ($string =~ tr/X//);
    print "There are $count Xs in the string";

This is fine if you are just looking for a single character. However, if you are trying to count multiple character substrings within a larger string, tr/// won't work. What you can do is wrap a while loop around a pattern match.

    $string="-9 55 48 -2 23 -76 4 14 -44";
    $count++ while $string =~ /-\d+/g;
    print "There are $count negative numbers in the string";


Other resources at this site: