2012-07-31 64 views
0

再次,整整一天,我又被卡住了。Perl - 搜索字數列表以檢查電子郵件地址的任何部分中的部分匹配

我需要使用包含禁止出現在電子郵件地址中的單詞或var的數組。

或者:

$baddies = 'smtp mailer sysop'; 

@baddies = qw(smtp mailer sysop); 

@baddies = qw/smtp mailer sysop/; 

有更壞的話數組中太,大約24個。

我沒有運行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 $_~; 
    } 
    } 

回答

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 
}