Как разобрать строку для адреса электронной почты в Perl с помощью регулярного выражения?

Я не могу понять, как разобрать адрес электронной почты из строки, используя RegEx.

Я не думаю, что смогу использовать модуль Email::Address, поскольку он не поставляется с версией perl, которую нам сказали скачать, иначе это было бы довольно просто.

Мой текущий код с адресом электронной почты:: адрес

use strict;

#use Email::Valid;

my $infile = 'IJCA_reviewer_list.txt';
my $outfile = 'output.txt';
open my $out, ">> $outfile";
open my $in, "< $infile" or die "Can't open $infile : $!";
use Email::Address;

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

    chomp $line;

    my $addrs = Email::Address->parse($line);

    print $out "$addrs , ";
}

close $in;
close $out;

2 ответа

Я хотел бы использовать File::Slurp и Email::Address следующим образом:

#!/usr/bin/env perl
#
use strict;
use warnings;

use File::Slurp qw( read_file );
use Email::Address;

my $infile  = 'IJCA_reviewer_list.txt';
my $outfile = 'output.txt';

my $intext = File::Slurp::read_file( $infile );
my @emails = Email::Address->parse( $intext );

File::Slurp::write_file( $outfile, join("\n", @emails) );

ОБНОВЛЕНИЕ: Если вам нужна помощь в установке модулей CPAN, вы можете прочитать это.

http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html показывает регулярное выражение для разбора электронных писем.

Спецификация для писем довольно жесткая.

Вам, вероятно, лучше всего поискать в cpan модуль, который разделит письмо на части для вас.

Другие вопросы по тегам