Tôi cần phải đọc từ một tệp, lặp qua nó và viết dòng đó vào tệp khác. Khi số lượng các dòng đạt đến ngưỡng, hãy đóng chốt xử lý tệp đầu ra và mở một tệp mới.Trong Perl, cách tránh mở các tệp nhiều lần
Làm cách nào để tránh mở và đóng trình xử lý tệp đầu ra mỗi khi tôi đọc một dòng từ xử lý tệp đầu vào như dưới đây?
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;
Không mở và đóng tệp của bạn trong vòng lặp. Di chuyển lệnh 'open' trên vòng lặp for. –