Perl regex which grabs ALL double letter occurances in a line

Posted by phileas fogg on Stack Overflow See other posts from Stack Overflow or by phileas fogg
Published on 2011-01-04T02:46:29Z Indexed on 2011/01/04 2:54 UTC
Read the original article Hit count: 226

Filed under:
|

Hi all, still plugging away at teaching myself Perl. I'm trying to write some code that will count the lines of a file that contain double letters and then place parentheses around those double letters.

Now what I've come up with will find the first ocurrance of double letters, but not any other ones. For instance, if the line is:

Amp, James Watt, Bob Transformer, etc. These pioneers conducted many

My code will render this:

19 Amp, James Wa(tt), Bob Transformer, etc. These pioneers conducted many

The "19" is the count (of lines containing double letters) and it gets the "tt" of "Watt" but misses the "ee" in "pioneers".

Below is my code:

$file = '/path/to/file/electricity.txt';        
open(FH, $file) || die "Cannot open the file\n";        

my $counter=0;

while (<FH>) {
    chomp();
    if (/(\w)\1/) {
        $counter += 1;
        s/$&/\($&\)/g;
        print "\n\n$counter $_\n\n";
    } else {
        print "$_\n";
    }
}

close(FH);          

What am I overlooking?

TIA!

© Stack Overflow or respective owner

Related posts about regex

Related posts about perl