过滤后在 Perl 中连接行

Connecting rows in Perl after filter

我想问你一些提示。我的代码看起来像接下来的几行:

#!/usr/bin/env perl

while (<DATA>) {
 if (/\bSTART\b/ .. /\bEND\b/) {
    #$together = $_;
    #$together = chomp ($_);  
    print ($_, "\n");   
 }
}

__DATA__
rubish
rub
START Data Data Data start 15.05.2015 Data i want end Data 
END
rubishend

*****************
example:
START new line 1 line 2new line 3 END
*****************

我的目标是过滤多行日志。输出是匹配正则表达式的一两行。但输出可以是一行 --> 这就是我想要的。或者双行,在这种情况下,我需要将第二行连接到第一行的末尾。我的代码输出如下:

START Data Data Data start 15.05.2015 Data i want end Data 
END
START new line 1 line 2new line 3 END

我想要的是:

START Data Data Data start 15.05.2015 Data i want end Data END
START new line 1 line 2new line 3 END

有什么技巧可以区分两线输出并接成一条线吗?为了在接下来的步骤中更好地解析?谢谢回答

来自触发器运算符的文档:

The value returned is either the empty string for false, or a sequence number (beginning with 1) for true. [...] The final sequence number in a range has the string "E0" appended to it

所以,

while (<DATA>) {
   if (my $i = /\bSTART\b/ .. /\bEND\b/) {
      s/\n/ / if $i !~ /E0\z/; 
      print;
   }
}

没有触发器运算符:

my $in = 0;
while (<DATA>) {
   if ($in ||= /\bSTART\b/) {
      if (/\bEND\b/) {
         $in = 0;
      } else {
         s/\n/ /;
      }
      print;
   }
}