Ich muss aus einer Datei lesen, durchlaufen Sie es und schreiben Sie die Zeile in eine andere Datei. Wenn die Anzahl der Zeilen einen Schwellenwert erreicht, schließen Sie den Ausgabedateipunkt und öffnen Sie einen neuen.In Perl, wie zu vermeiden, Dateien mehrmals zu öffnen
Wie vermeide ich das Öffnen und Schließen der Ausgabedatei behandeln jedes Mal, wenn ich eine Zeile aus der Eingabedatei behandeln wie unten lesen?
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;
Öffnen und schließen Sie Ihre Datei nicht innerhalb der for-Schleife. Bewegen Sie den Befehl 'open' über die for-Schleife. –