Hello!

I have a pattern matching question using Perl 5.10, Windows 7.  Suppose I
have a file containing the following block of text:

Hello there TODD
I my We Us ourselves OUr I.

The file has 10 words, including 7 first-person pronouns (and 3 non-pronouns
that I have no interest in).

I've scrabbled together the following code:




#!/usr/bin/perl
use strict;
use warnings;

my @prnouns1 = qw(I we me us myself ourselves mine ours my our);

...

while (my $line = <>)
{
  chomp $line;
  my @strings = split /\s+/, $line;
  my @words = grep /\w+/, @strings;
  my $n_words += scalar(@words);
  $fst_prsn += scalar (grep {my $comp1 = $_; grep {$_ =~ /\b$comp1\b/ig}
@words} @prnouns1);
}
print "Result: Number of words: $n_words - First: $fst_prsn\n";




The result produced by this code is incorrect:

Result: Number of words: 10 - First: 6

It's not counting the second "I" although I've included the /g modifier.
 Can anyone tell me why?  How can I accomplish this?

Owen Chavez

Reply via email to