Ich habe eine große (300 kB) Textdatei, die durch Leerzeichen begrenzte Wörter enthält. Jetzt möchte ich diese Datei öffnen und jedes Wort einzeln verarbeiten.Textdatei in Perl Wort für Wort statt Zeile für Zeile lesen
Das Problem ist, dass Perl liest die Datei Zeile für Zeile (d. H.) Die gesamte Datei auf einmal, die mir seltsame Ergebnisse gibt. Ich weiß, der normale Weg ist, etwas zu tun wie
open($inFile, 'tagged.txt') or die $!;
$_ = <$inFile>;
@splitted = split(' ',$_);
print $#splitted;
Aber das gibt mir eine fehlerhafte Wortzahl (zu große Array?).
Ist es möglich, die Textdatei Wort für Wort zu lesen?
Was meinst du ein "fehlerhaft" Wort zählen? Wenn Sie die Anzahl der Elemente in '@ splitted' haben wollen, verwenden Sie' scalar @ splitted'. Schließlich liest der Code, den Sie haben, nur eine Zeile der Datei. –
@AndyLester. Als ich sagte, dass die Wörter durch Leerzeichen begrenzt waren, meinte ich mit Leerzeichen und nur mit Leerzeichen. Der obige Code liest also die gesamte Datei auf einen Schlag. Entschuldigung, wenn das unklar war.Wenn ich wc auf der Datei lief, bekam ich eine Wortzahl von 41404, als ich den obigen Code ausführte, bekam ich eine Wortzahl von 1948, und als ich RobEarls Lösung ausprobierte, bekam ich 41404 wieder. –
Ich kann mir vorstellen, dass es neue Zeilen in der Datei gibt, die Ihnen nicht bekannt sind. Es gibt keinen anderen Grund, warum Ihr Code nicht so funktionieren sollte, wie er ist. Was sagt "wc" für die Anzahl der Zeilen in der Datei (die erste Zahl in der Ausgabe)? – Borodin