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]

Reply via email to