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