【问题标题】:Processing mulitiple files line by line in Perl在 Perl 中逐行处理多个文件
【发布时间】:2014-01-09 10:07:29
【问题描述】:

我正在尝试使用 glob() 查找多个文件,然后逐行处理每个文件。
当我运行此命令时:

my @dir = glob($ARGV[0]);
foreach my $file (@dir){
    local $/ = undef;
    open (input, "<$file");

    while (my $line = <input>){   
        $line =~ ...
    }
    close(input);
}

它确实会打开文件,但仅适用于每个文件的第一行。它仅在一次迭代后退出 while 循环。这里的漏洞在哪里?

【问题讨论】:

    标签: perl file glob


    【解决方案1】:

    local $/ = undef; 行是您的问题。 $/ 存储定义行尾的字符序列。通过将其设置为undef,您基本上可以告诉 perl 立即读取完整的文件。 See perlvar for details.

    【讨论】:

    • Argh.. 从另一个脚本中复制了该部分,我以不同的方式打开了文件,并没有真正考虑过。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多