Potrzebuję odczytać z pliku, iterować go i zapisać wiersz do innego pliku. Gdy liczba linii osiągnie próg, zamknij uchwyt pliku wyjściowego i otwórz nowy.W Perlu, jak uniknąć wielokrotnego otwierania plików
Jak uniknąć otwierania i zamykania uchwytu pliku wyjściowego za każdym razem, gdy czytam wiersz z uchwytu pliku wejściowego, jak poniżej?
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;
Nie otwieraj i nie zamykaj pliku wewnątrz pętli for. Przesuń komendę 'open' powyżej pętli for. –