验证文本文件中的电子邮件地址?

Bra*_*ble 1 perl

我试图搜索文本文件并找到有效的电子邮件地址.我做这样的事情:

    #!/usr/bin/perl -w

my $infile = 'emails.txt';

    open IN, "< $infile" or die "Can't open $infile : $!";

    while( <IN> )
    { 
        if ($infile =~ /^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/) 
        { 
            print "Valid \n"; 
        } 
    }

    close IN;
Run Code Online (Sandbox Code Playgroud)

但它没有做任何事情,任何帮助?

jir*_*ira 11

您将电子邮件地址regexp与文件名匹配.无论如何,你不应该使用正则表达式来验证电子邮件地址 - 使用Email :: Valid

use strict;

use Email::Valid;

my $infile = 'emails.txt';

open my $in, "< $infile" or die "Can't open $infile : $!";

while(my $line = <$in> ) {

    chomp $line;

    if (Email::Valid->address($line)) {

        print "Valid \n";

    }


}

close $in;
Run Code Online (Sandbox Code Playgroud)

  • 为了扩展为什么这是正确的答案,http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html是实际验证电子邮件地址所需的正则表达式. (2认同)