[Mimedefang] Code fragment works only sometimes

Andrea Venturoli ml.ventu at flashnet.it
Mon Jul 14 16:17:01 EDT 2003


** Reply to note from Joseph Brennan <brennan at columbia.edu> Mon, 14 Jul 2003 10:25:08 -0400

Thanks a lot for your suggestions.

> Make sure you close() those files before you return, or you're 
> going to accumulate lots of open filehandles.  Since you're 
> stuffing the data into arrays, why not close right after that, 
> before the first foreach statement. 
>  
> Clear the variables when done, or make them local with my(). 

Ok, I've tried these two. Since I'm not a perl guru, I've reported my code once again. Could you please give it another
look?

    if (open(HDR,"HEADERS")&&open(BLK,"/usr/local/netfence/local/etc/spam_recipients"))
    {
        my(@lines)=<HDR>; my(@blk)=<BLK>;
        close(HDR); close(BLK);
        foreach $line (@lines)
        {
            foreach $blk (@blk)
            {
                if (rindex($line,$blk)!=-1)
                {
                    md_log($line);
                    return action_bounce("Spam is not accepted");
                }
            }
        }
    }





> You could lowercase everything before comparing, so it's not 
> case-sensitive, if that's desirable. 

For now it doesn't look as if it is needed, but just in case how would I do that?



> Do chomp($blk) each time to get rid of the newlines.

Sorry, I didn't understand this. Which newlines? Why?



Another possible improvement would be to read BLK only once, not for each message I parse. Can I do this? How?



 bye & Thanks
        av.






More information about the MIMEDefang mailing list