我正在尝试使用 glob()查找多个文件,然后逐行处理每个文件。
当我运行时:
my @dir = glob($ARGV[0]);
foreach my $file (@dir){
local $/ = undef;
open (input, "<$file");
while (my $line = <input>){
$line =~ ...
}
close(input);
}
它会打开文件,但只适用于每个文件的第一行。它只在一次迭代后退出while循环。这里的缺陷在哪里?
答案 0 :(得分:6)
行local $/ = undef;
是您的问题。 $/
存储定义行尾的字符序列。通过将其设置为undef
,您基本上可以告诉perl立即读取整个文件。 See perlvar for details