Perl读取段落和模式匹配中的文本

时间:2014-02-26 12:50:37

标签: perl

我有一个索引文件,它保持每个对象的索引用空行分隔。现在,我必须在每个对象上搜索关键字,如果存在,则转储到另一个文件,而不是从头开始重建整个索引。这段代码

###@files is an array that contains the list of packages in the index
 open("FH", $indexfile) or die ;
 my @linearray = <FH>;
 close ("FH");

 open (NFH, '>', "$tmpfile") or die "cannot create";
     foreach my $pattern (@files)
{
    if (my @matches = grep /$pattern/, @linearray) {
        print NFH "@matches";
    } else {
        push @newpkgs,$pattern;
    }
}
close (NFH);    

但这不符合预期。如何将段落作为数组中的元素?

1 个答案:

答案 0 :(得分:2)

修改$ /

my @linearray;
    {
    open("FH", $indexfile) or die ;
    local $/ = '';
    @linearray = <FH>;
    close ("FH");
    print Dumper @linearray;
    }

这将为您提供所需的输出。

我使用大括号{}来限制字段记录分隔符修改的范围,直到将对象读取到数组。您可以根据自己的要求进行扩展。