Perl 将相同匹配模式的两个连续行放入一行

Perl 将相同匹配模式的两个连续行放入一行,perl,Perl,我想解析这组行,这样,如果在连续行中获得相同的模式,如***,它应该在两行之间使用“,”单独打印 q2VDWKkY010407 2221878 Sat Mar 31 19:37 <Mailer-daemon> (host map: lookup (my.local.domain): deferred) <yagyavalkbhatt@yahoo.

我想解析这组行,这样,如果在连续行中获得相同的模式,如
***
,它应该在两行之间使用“,”单独打印

q2VDWKkY010407  2221878 Sat Mar 31 19:37 <Mailer-daemon>
                     (host map: lookup (my.local.domain): deferred)
                                             <yagyavalkbhatt@yahoo.com>
                                             <yagyavalkbhatt@yahoo.com>
q2VDWKkY010407  2221878 Sat Mar 31 19:37 <Mailer-daemon>
                     (host map: lookup (my.local.domain): deferred)
                                             <yagyavalkbhatt@yahoo.com>
                                             <yagyavalkbhatt@yahoo.com>
Q2VDWKY010407 2221878星期六3月31日19:37
(主机映射:查找(my.local.domain):延迟)
Q2VDWKY010407221878星期六3月31日19:37
(主机映射:查找(my.local.domain):延迟)
如何在Perl中做到这一点?

使用lookaround:

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

my $str = <<'EOS';
q2VDWKkY010407  2221878 Sat Mar 31 19:37 <Mailer-daemon>
                     (host map: lookup (my.local.domain): deferred)
                                             <yagyavalkbhatt@yahoo.com>
                                             <yagyavalkbhatt@yahoo.com>
q2VDWKkY010407  2221878 Sat Mar 31 19:37 <Mailer-daemon>
                     (host map: lookup (my.local.domain): deferred)
                                             <yagyavalkbhatt@yahoo.com>
                                             <yagyavalkbhatt@yahoo.com>
EOS

$str =~ s/(?<=<yagyavalkbhatt\@yahoo.com>)\s+(?=<yagyavalkbhatt\@yahoo.com>)/,/g;
print $str;
#/usr/bin/env perl
严格使用;
使用警告;

my$str=谢谢flesk,但问题是,如果第二个连续的电子邮件id不同,您显示的输出可能会不同,对不起,除了这些电子邮件,我不需要上述值adresses@yagyavalkbhatt:您是说您只想从字符串中提取所有电子邮件地址?如果公平地假设所有电子邮件地址都包含在
我的@emails=$str=~//g
应该可以做到这一点。感谢Flesk如何在EOS或$@yagyavalkbhatt中打印文本文件内容:如果您的内容在文本文件中,您应该从文件句柄中读取:
打开我的$fh,“人们在没有说明原因的情况下投票。发布您的工作。我已经删除了我的解决方案,因为您没有发布您的工作。
q2VDWKkY010407  2221878 Sat Mar 31 19:37 <Mailer-daemon>
                 (host map: lookup (my.local.domain): deferred)
                                         <yagyavalkbhatt@yahoo.com>,<yagyavalkbhatt@yahoo.com>
q2VDWKkY010407  2221878 Sat Mar 31 19:37 <Mailer-daemon>
                 (host map: lookup (my.local.domain): deferred)
                                         <yagyavalkbhatt@yahoo.com>,<yagyavalkbhatt@yahoo.com>