首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Tie::File操作Perl文件

使用Tie::File操作Perl文件
EN

Stack Overflow用户
提问于 2012-07-10 22:12:37
回答 1查看 605关注 0票数 1

我正在解析一个HTML文件,该文件包含以类似于网格的方式关联的数据,并且即将完成。我之前认为需要删除所有空行,但我没有注意到网格中的一些字段是空白的。我现在尝试使用Tie::File模块将文件存储在数组中,对其进行迭代,如果有三个连续的空行,我希望插入一个可以在以后操作的虚拟值,以便空行剥离不会改变数据的结构。

到目前为止我已经尝试过的(文件大小约为2 MB):

代码语言:javascript
复制
my @lines;
my $num = 0;
tie @lines, 'Tie::File', 'results.txt';
(tied @lines)->defer;

foreach (@lines)
{
    chomp $lines[$num];
    $num++;
    if ($lines[$num-1] =~ /^$/ && $lines[$num+1] =~ /^$/)
    {
        $lines[$num] = "null";
    }
}

(tied @lines)->flush;

untie @lines;

编辑:如何迭代数组并插入值,使每行之间只有一个空格,这样以后我就可以去掉所有空行?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-11 01:40:33

如果我正确理解了您的问题(将三个连续的空行替换为单词"null“,并在两边各替换一个空行),那么对文件内容执行以下regex操作可能会有所帮助:

代码语言:javascript
复制
use Modern::Perl;

my $htmlFile = do { local $/; <DATA> };

$htmlFile =~ s/(?<!\S)\n{3}/\nnull\n\n/g;

say $htmlFile;

__DATA__



A
B






C
D



E
F

Output:

null

A
B

null


null

C
D

null

E
F
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11415212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档