Hello, I'm trying to match this line (or more than one) starting from
the words "user picard..."
8/28/2006 1:04:41 PM: Retrieving mail from host mail.maine.edu
[130.111.32.22], user picard...
8/28/2006 1:04:45 PM: Mail retrieval failed, reason: POP3 Host did
not acknowlege password and returned following error: -ERR [AUTH]
Invalid login
Using this regular expression:
user (\w+(\.\w+)?(\.\w+)?)\.\.\.\n\d{1,2}\/\d{1,2}\/\d{4} \d{1,2}:\d
{2}:\d{2} (A|P)M: Mail retrieval failed, reason: POP3 Host did not
acknowlege password and returned following error: -ERR \[AUTH\]
Invalid login
I seem to be matching it in ActiveState's regular expression toolkit,
but when I try running the code it doesn't match the lines. I've
tracked it down to the new line character after the three dots at the
end of the first line. But I can't figure out how to get past it. The
\n don't work. I've tried using chomp and then removing the new line
character but it still doesn't match.
Below is my code that I'm trying to get working and can't seem to get
that regex. Any pointers that any has would be appreciated. Thank you.
Romeo
#!/usr/bin/perl -w
use strict;
my %saw;
my @dup_array;
# Open the file for reading and if cannot die and give error message.
open LOG, "c:\\Documents and Settings\\romeok\\desktop\\perl\
\CopyofPOPconSrv.log"
or die "Cannot open file for reading: $!";
# While the file is open read through it and remove new line characters.
# Look for the memory variable $1 and push it into the
# @dup_array.
while (<LOG>) {
if (/user (\w+(\.\w+)?(\.\w+)?)\.\.\.\n\d{1,2}\/\d{1,2}\/\d{4} \d
{1,2}:\d{2}:\d{2} (A|P)M: Mail retrieval failed, reason: POP3 Host
did not acknowlege password and returned following error: -ERR \[AUTH
\] Invalid login/) {
push @dup_array, $1;
}
}
# When done close the file.
close LOG;
# These two lines remove duplicates from the array.
undef %saw;
my @no_dup_array = grep(!$saw{$_}++, @dup_array);
# For each item in the array print it out.
# Actually use this to send an email instead.
foreach (@no_dup_array) { #Uses $_ by default
print "$_\n";
}
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>