Hi All,

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.

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>




Reply via email to