在Perl中逐行处理多个文件

时间:2014-01-09 10:07:29

标签: perl file glob

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

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

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

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

1 个答案:

答案 0 :(得分:6)

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