string searching

here is what I want to do...


I have a flat file db with the following...


"Ryan","ryan@ryan.com"
"Bill","bill@bill.com"

etc....

I want to remove an entry by email address... what can I use to test if ryan@ryan.com is in a line, if so remove it.

open(file,"/path/data.dat");
@data = <file>;
close(file);

open(newfile,">path/data.dat");

foreach $line (@data) {

chop($line);

if (!($line contains ryan@ryan.com)) {
 print newfile "$line\n";

}
close(newfile);


thanks!
msknrAsked:
Who is Participating?
 
jhurstConnect With a Mentor Commented:
if ($line !~ /,\"ryan@ryan.com\"/i) {print $line}

is better for a couple of reasons:

a) it uses the !~ rather than doing the wrong test and then inverting it

b) the inclusion of the ,\" etc will ensure that an entry like: Jamesryan@tyan.com will not be recognized.  

c) the use of the /i at the end of the patern will ensure that the eMail address is case insensitive as it should be.
0
 
ozoCommented:
if( !($line =~ /\Qryan@ryan.com\E/) ){
    print newfile "$line\n";
}
0
All Courses

From novice to tech pro — start learning today.