Ho un grande file di testo (300 kB) contenente parole delimitate da spazi. Ora voglio aprire questo file ed elaborare ogni parola in esso uno per uno.Leggi il file di testo in Perl parola per parola anziché riga per riga
Il problema è che perl legge il file riga per riga (cioè l'intero file in una sola volta, il che mi dà strani risultati. So che il modo normale è quello di fare qualcosa di simile
open($inFile, 'tagged.txt') or die $!;
$_ = <$inFile>;
@splitted = split(' ',$_);
print $#splitted;
Ma questo mi dà un conteggio delle parole difettosa (troppo grande array?).
È possibile leggere il file di testo parola per parola, invece?
Cosa intendi contano una parola "guasto" leggermente modificata? Inoltre, se vuoi il numero di elementi in '@ diviso ', usa' scalare @ diviso'. Infine, il codice che hai sta leggendo solo una riga del file. –
@AndyLester. Quando ho detto che le parole erano delimitate da spazi intendevo per spazi e solo per spazi. Quindi il codice sopra legge l'intero file in un colpo solo. Scusa se non era chiaro.Quando ho eseguito wc sul file, ho ottenuto un conteggio delle parole di 41404, quando ho eseguito il codice sopra ho ottenuto un conteggio delle parole del 1948 e quando ho provato la soluzione di RobEarl ho ottenuto nuovamente 41404. –
Immagino che ci siano delle nuove righe nel file di cui non si è a conoscenza; non c'è altro motivo per cui il tuo codice non dovrebbe funzionare così com'è. Cosa dice 'wc' per il numero di righe nel file (il primo numero nell'output)? – Borodin