perl - 如何在单行上打印某些起始行和终止行之间的所有内容?

标签 perl

while(<FILE>)
{
    chomp $_;
    $line[$i]=$_;
    ++$i;
}

for($j=0;$j<$i;++$j)
{
    if($line[$j]=~/Syn_Name/)
    {
        do
        {
            print OUT $line[$j],"\n";
            ++$j;
        }
        until($line[$j]=~/^\s*$/)
    }
}

这是我的代码,我试图在 Syn_Name 和空行之间打印数据。
我的代码提取了我需要的块。
但是chunk之间的数据是逐行打印的。我希望每个块的数据都打印在一行上。

最佳答案

简化您的代码。使用触发器操作符来控制打印。请注意,打印最后一行不会添加换行符(除非该行包含多个换行符)。充其量,它打印空字符串。在最坏的情况下,它会打印空白。

您不需要线条的过渡数组,您可以使用 while 循环。如果您无论如何都想存储这些行,我添加了一条注释行,说明如何最好地完成。

#chomp(my @line = <FILE>);
while (<FILE>) {
    chomp;
    if(/Syn_Name/ .. /^\s*$/) {
        print OUT;
        print "\n" if /^\s*$/;
    }
}

关于perl - 如何在单行上打印某些起始行和终止行之间的所有内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8361955/

相关文章:

perl - 取消引用哈希引用中的标量引用

multithreading - Perl:从后台线程关闭 open2 句柄

perl - Getopt::Long 将带空格的字符串转换为变量

perl - 在 Mojolicious Controller 单元测试中将文件作为参数传递

perl - 如何使用 Perl 将本地时间转换为 YYYY-MM-DD

perl - 如何控制 Data::Dumper 输出的格式?

arrays - Perl:使用数组列表来选择特定列

closures - 如何使用嵌套闭包作为 List::Util::reduce 的第一个参数?

arrays - 如何有选择地访问 Perl 子例程返回的元素?

perl - 如何在 Perl 中获取 HTTP 状态和 Location header ?