C:\>perldoc -q count
Found in C:\Perl\lib\pod\perlfaq4.pod
How can I count the number of occurrences of a substring within a st
+ring?
There are a number of ways, with varying efficiency. If you want a
+ count
of a certain single character (X) within a string, you can use the
"tr///" function like so:
$string = "ThisXlineXhasXsomeXx'sXinXit";
$count = ($string =~ tr/X//);
print "There are $count X characters in the string";
This is fine if you are just looking for a single character. Howev
+er, if
you are trying to count multiple character substrings within a lar
+ger
string, "tr///" won't work. What you can do is wrap a while() loop
around a global pattern match. For example, let's count negative
integers:
$string = "-9 55 48 -2 23 -76 4 14 -44";
while ($string =~ /-\d+/g) { $count++ }
print "There are $count negative numbers in the string";
Another version uses a global match in list context, then assigns
+the
result to a scalar, producing a count of the number of matches.
$count = () = $string =~ /-\d+/g;
|