Perl在反垃圾邮件与支持邮件处理中的应用
1. 正则表达式预编译
在处理正则表达式时,我们关注的编译过程仅在创建代码引用时进行一次。之后,我们可以随意多次调用每个子程序,而无需为正则表达式编译付出时间代价。
如果你使用的是Perl 5.005或更高版本,还有一种稍微不那么高级但更直接的技术来编写相关代码。Perl 5.005引入了一种名为“预编译正则表达式”的新语法结构,这使得任务变得更加简单。以下是使用该新结构重写的代码示例:
sub loadblist{
tie %blist, 'BerkeleyDB::Hash', -Filename => $blacklist
or die "Cannot open file $filename: $! $BerkeleyDB::Error\n" ;
while(my($key,$value) = each %blist){
# 黑名单也可以包含 "OK", "RELAY" 等
next if ($value ne "REJECT");
push(@blisttests,[qr/\Q$key/,$key]);
}
}
sub checkblist{
my($line) = shift;
foreach my $test (@blisttests){
my($re,$key) = @{$test};
return $key if ($line =~ /$re/);
}
return undef;
}
</
超级会员免费看
订阅专栏 解锁全文
4

被折叠的 条评论
为什么被折叠?



