Mark Anderson wrote: > > > From: Eric Walker [mailto:[EMAIL PROTECTED] > > Sent: Friday, November 21, 2003 1:34 PM > > Subject: search > > > > > > I am trying to search a string for a "[]". I want to count the amount > > of "[]" in the string. > > > > Any IDeas.... > > perldoc -q count > > gives you: > > How can I count the number of occurrences of a substring within a string? > > 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. > 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 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"; > > > You want the second example, but you want to use /\[\]/g as your pattern > match.
Hi Mark. There's no need for the loop. All you have to do is execute the pattern match in list context and take the scalar value of that list: my $string = "-9 55 48 -2 23 -76 4 14 -44"; my $count = () = $string =~ /-\d+/g; print "There are $count negative numbers in the string"; **OUTPUT There are 4 negative numbers in the string HTH, Rob -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]