gfarhat has asked for the wisdom of the Perl Monks concerning the following question:

I'm trying to search for a substring in a string, this is what i'm doing:

my $toFind="String"; foreach $line (@list){ $_=$line; if(m/$line1/i){ print "$line\n"; }

The thing is that i want to get all line where the exact string "String" exists. And i dont want to print lines where String.c or String.o exist

Replies are listed 'Best First'.
Re: search for exact string
by stiller (Friar) on Mar 27, 2008 at 11:57 UTC
    my $toFind="String"; foreach (@list){ next unless /$toFind/i; next if /$toFind[.][hco]/i; print; }

    Or you could look up "lookahead"

      I replied to the other thread before I saw the double post (my answer was confused, to boot). But, I figured I'd use this as a good time to learn about lookaheads:

      my @lines = ( q(String), q(I have a String), q(I have a String and a .c), q(I have a String.c), q(String.O) ); foreach (@lines) { #Look for String, not followed by .c, .o next unless /String(?![.][coCO])/; print $_ . "\n"; } Output: String I have a String I have a String and a .c

      I have to get less lazy about learning new facets of Perl, it is always much less painful/time-consuming to get a grasp of the basics than I think it is going to be.