On Apr 2, 2013, at 1:12 PM, Kees Theunissen wrote:

> 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


Kees,

Thank you very much!
Being new to this stuff it was driving me nuts, as I presumed the while loop 
would start the if loop with every new line.

All the best 
Lars Sorensen


_______________________________________________
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