PDA

Visualizza la versione completa : appendere in testa e in coda a un file di testo


Sayron
11-06-2004, 16:02
salve,

avrei bisogno di aggiungere alcune righe all'inizio e altre alla fine di alcuni file di testo... sapete darmi qualche suggerimento sulla via piu' corretta per farlo ?

grazie ;)

Lethalman
11-06-2004, 18:02
Per la coda basta usare l'opzione append quando apri il file e poi ci scrivii normalmente... in Perl è:

open(FILE, ">>file.txt")

>> significa in append ed è pari pari stile bash.
Mentre per la coda, non ne conosco opzioni ma ti posso consigliare di mettere tutto il file in un buffer, poi lo apri in scrittura, scrivi quello che devi scrivere e gli scrivi dopo il buffer in modo da mettere il tuo testo in testa :D

shishii
12-06-2004, 00:09
Ciao,

mettere tutto il file in un buffer va bene solo se si tratta di piccoli file, altrimenti è dannoso molto meglio scorrerlo.

per mettere tuuto il file in un buffer si può usare:

open (FILE, "<file.txt");
@file = <FILE>;
close FILE;

e in @file ci sarà tutto il file.

Ma se il file è grosso consiglio:

use FILE::Copy; # questo modulo è standard

# apro in lettura il file da modificare
open (LEGGO, "<$leggo.txt");
# apro in scrittura il file che conterrà il nuovo testo
open (SCRIVO, ">$scrivo.txt");
# scrivo all'inizio il nuovo testo
print SCRIVO "prima nuova riga\n";
print SCRIVO "seconda nuova riga\n";
# copio il vecchio testo
while (<LEGGO>) {
print SCRIVO;
}
close SCRIVO;
close LEGGO;
# rinomino il file con il nuovo testo col il vecchio nome
move ("scrivo.txt", "leggo.txt");

ad ogni modo ancora meglio sarebbe l'uso dei moduli Tie::File che sono potentissimi, ma necessitano di qualche base di perl.

Sayron
13-06-2004, 09:50
Vi ringrazio molto per i suggerimenti.
Dato che ho un po' di tempo per studiarci sopra penso che daro' un'occhiata anche ai moduli Tie::File e vedro' quale metodo mi conviene scegliere.

:ciauz: grazie ancora

Loading