On Tue, 2 Apr 2013, Lars Sorensen wrote:

>Hello,
>
>Trying to get heads and tails of Mimedefang and Perl, I'm stuck understanding 
>why the below code in Mimedefang will only match on the first line of an email 
>and ignore the rest.
>
>So:
>"open something anotherthing thirdthing" only matches if on the first line of 
>the email, and additional lines are ignored.
>I'm trying to match all occurrences of lines with this pattern and add headers 
>accordingly.
>Can anybody throw me a bone on this one?
>
>###########################################################################
>sub filter {
>       my($entity) = @_;
>
>       if (grep {/email\@example\.com/i} @Recipients) {
>               my $io;
>               if ($io = $entity->open("r")) {
>                       while (defined($_ = $io->getline)) {
>                               if  ( $_ =~ 
> /\bopen\W+([a-z]+)(\W+)?([a-z]+)?(\W+)?([a-z]+)?/i) {
>                                       action_add_header('X-header',"$1, $3, 
> $5");
>                                       last;
>                               }
>                       }
>               $io->close;
>               }
>       }
>}
>###########################################################################

Quoting from the output of the command: perldoc -f last

       last LABEL
       last    The "last" command is like the "break" statement in C (as used
               in loops); it immediately exits the loop in question.


So the "last;" command in your code will end the while-loop after processing
the first line that matches the regular expression.

Non-matching lines at the start of the message will be processed (ie: just
skipped) though if I read your code correctly.


Regards,

Kees Theunissen.

-- 
Kees Theunissen,  System and network manager,   Tel: +31 (0)30 6096724
Dutch Institute For Fundamental Energy Research (DIFFER)
e-mail address:   [email protected]
postal address:   PO Box 1207, 3430 BE Nieuwegein, NL
visitors address: Edisonbaan 14, 3439 MN Nieuwegein, NL

_______________________________________________
NOTE: If there is a disclaimer or other legal boilerplate in the above
message, it is NULL AND VOID.  You may ignore it.

Visit http://www.mimedefang.org and http://www.roaringpenguin.com
MIMEDefang mailing list [email protected]
http://lists.roaringpenguin.com/mailman/listinfo/mimedefang

Reply via email to