----- Original Message -----
From: Nick Chettle <[EMAIL PROTECTED]>
Date: Wednesday, March 16, 2005 7:02 am
Subject: Perl Analyzing Maillog

> Hi All,
Hello,

> 
> I am trying to write a simple script that will analyze a Postfix 
> maillog. The basic idea is that you give it an e-mail address and 
> it 
> will print all the relevant lines. In order to achieve this, you 
> first 
> need a message ID, you can then search for the id and bring all 
> the 
> relevant information.
> 
> This is what I have so far:
> 
> #!/usr/bin/perl
> 
> print "Please enter an e-mail address: ";
> chomp($email = <STDIN>);
> 
> open MAILLOG, "/var/log/maillog";
> 
> while (<MAILLOG>) {
>     if (/$email/) {
>         if (/[A-Z1-9]{8}/) {
>             $msgids[$_] = $&;
>         }
>     }
> }
> 
> This works fine and it builds an array of all the message id's. I 
> now 
> need an efficient way of searching through the log again and 
> pulling out 
> all lines that contain a message id.
   You are already doing it, why not keep the results first time around ?? One 
was it to create a Ref to Hash Ref of Array's [ I prefer this, others may 
simply do a HoA ]

while (<MAILLOG>) {
     if (/$email/) {
         if (/[A-Z1-9]{8}/) {
             push @{ $msgids->{$1} }, $_;    
        }
     }
}



> 
> I can do this with:
> 
> for (@msgids) {
>   system "cat /var/log/maillog | grep $_";
> }
> 
> But it's certainly not a very Perl way of doing it and it's less 
> than 
> efficient as I have to cat the entire maillog  for each message id.
> 
> I've been trying to open the filehandle again and then somehow get 
> foreach to go through it but haven't had much sucess. Can anyone 
> advise 
> if I'm looking along the right lines or if there is a better way 
> of 
> doing it?
> 
> Thanks, Nick
> 
> -- 
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> <http://learn.perl.org/> <http://learn.perl.org/first-response>
> 
> 
> 


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to