Perl - 搜索单词数组以检查电子邮件地址任何部分的部分匹配

时间:2012-07-31 22:00:59

标签: arrays match partial

再一次,我又被困了一整天。

我需要使用包含无法在电子邮件地址中显示的禁止字词的单词或var数组。

或者:

$baddies = 'smtp mailer sysop';

@baddies = qw(smtp mailer sysop);

@baddies = qw/smtp mailer sysop/;  

阵列中还有更多不好的词,大约有二十几个。

我没有运行最新版本的perl所以~~等不支持。

我正在进行循环,将乐队的时间表发送出去。

在该循环中,我需要检查电子邮件是否包含任何这些单词。 我意识到可能会有一些包含匹配的好电子邮件,但这很好。

在我放弃试图找出它之后,我已经尝试了几十个例子。

最新消息:

####FYI## $uaddress is from the foreach $uaddress(@addresses){ loop.

my %params = map { $uaddress => 1 } @baddies;
if(exists($params{$uaddress})) {
print "yep, it's there"; #for testing
push(@failed,"$uaddress is restricted<br />");

但是,我尝试的一切都没有做到我需要的。

我甚至试过=〜等等。

我现在真的感到愚蠢..

我在这里需要另一个教训...提前致谢。

更新:我也尝试过:

$baddies = 'smtp mailer sysop';
 my @baddies = split / /, $baddies;
 # iterate through the array
  foreach (@baddies) {
   if($_ =~ $uaddress) #I also reversed that {
   print qq~$uaddress contains $_~;
   }
  }

1 个答案:

答案 0 :(得分:0)

通过试验,错误和愚蠢的运气,我偶然得到以下工作:

foreach $uaddress(@addressList) {
 $uaddress =~ s/\s//g;
    @baddies = qw(smtp mailer sysop);
    my @failed;
     foreach (@baddies) {
      if($uaddress =~ m/$_/i) {
       push(@failed,"$uaddress is restricted because it found \"$_\" in the address<br />");
      }
    }
##stuff happens with emails that passed like Email::Verify
}