在Perl中有效地选择和替换数组中的所有字符串

时间:2016-02-25 11:25:06

标签: regex perl loops

目前我正在从文件中读取行,将其删除,并用空格替换制表符,如下所示:

open( my $xpfh, '<', $xpathfile ) or die "cannot open file $xpathfile";
    chomp( my @xplines = <$xpfh> );
    close $xpfh;

    foreach my $xpline (@xplines) {
        $xpline =~ s/\t/ /g;
...

正如您所看到的,chomping发生在foreach循环之外,但每次迭代都会发生替换。如何将这个动作带到foreach循环之外,更接近于chomping?我问,因为我认为这比每次迭代运行正则表达式要快。无论哪种方式,在语法上更令人愉快的是,所有结构操作都在同一个块中发生。

1 个答案:

答案 0 :(得分:2)

我可能会这样做没有将文件压入数组,然后迭代数组:

while ( <$xpfh> ) {
    chomp;
    s/\t/ /g;
    print;
}

如果您确实需要该阵列的原因有其他原因:

s/\t/ /g for @xplines;