我需要从一个文件读取数据,遍历它并将该行写入另一个文件。当行数达到阈值时,关闭输出文件句柄并打开一个新句柄。在Perl中,如何避免多次打开文件
如何避免每次从输入文件句柄中读取一行时打开和关闭输出文件句柄?
use autodie qw(:all);
my $tot = 0;
my $postfix = 'A';
my $threshold = 100;
open my $fip, '<', 'input.txt';
LINE: while (my $line = <$fip>) {
my $tot += substr($line, 10, 5);
open my $fop, '>>', 'output_' . $postfix;
if ($tot < $threshold) {
print {$fop} $line;
}
else {
$tot = 0;
$postfix++;
redo LINE;
}
close $fop;
}
close $fip;
不要在for循环中打开和关闭文件。在for循环上移动'open'命令。 –