在Perl中,如何从日志文件中的行中提取电子邮件地址?

mmk*_*mkd 2 regex perl

我希望修剪一个字符串,该字符串将逐行读取文件.但是,我只想从字符串中提取电子邮件,但每次都会更改.例如,唯一的内容是域名@domain.com.

所以对于输入字符串

 00:00:50,004 ERROR [SynchronousCallback] Cannot process resource: test.test@domain.com  Channel: channel16
Run Code Online (Sandbox Code Playgroud)

什么正则表达式将寻找@domain.com并拉出所有test.test@domain.com.我有一个正在寻找字符串的正则表达式m/@domain.com/i但我不知道如何@domain.com在整个字符串中定位后操作字符串.

我希望输出只是电子邮件 test.test@domain.com

Sin*_*nür 7

#!/usr/bin/env perl

use strict; use warnings;
use Email::Address;


while (my $line = <DATA>) {
    my ($addr) = Email::Address->parse($line);
    print $addr->address, "\n";
}

__DATA__
00:00:50,004 ERROR [SynchronousCallback] Cannot process resource: test.test@domain.com  Channel: channel16
Run Code Online (Sandbox Code Playgroud)

输出:

C:\temp> tt
test.test@domain.com