[Tech] Perl ? Carino, ma...

Cosimo Vagarini cosimo@firenze.linux.it
Mer 18 Apr 2001 12:09:22 CEST


Franco Bagnoli scrisse, il 18-Apr-2001
> Se sei in grado di trovare uno o piu' caratteri che terminano il record,
> puoi semplicemente assegnarli a $/ e il perl ti legge il file record per
> record. Ma non credo che sia fatto cosi'. Probabilmente il file e' un dump
> di strutture, con un contatore iniziale che dice quanto e' lungo il record
> e poi i dati, oppure e' a lunghezza fissa.  Se e' cosi' puoi leggere prima
> il contatore, eventualmente
> convertirlo (unpack) e poi usarlo per leggere il record come ti dice
> Cosimo usando read. Oppure usi una "finestra" di ampiezza fissa, magari
> concatenandone dinamimacemnte due per evitare di "mancare" un record
> perche' la stringa in questione e' nel mezzo (in questo caso devi
> eliminare i pattern trovati con s/$pattern//g) ma ti perdi l'identita' del
> record e quindi non sai se il pattern lo hai trovato due volte in un
> record o una volta in due record...

Ma se conosce come e' fatto il record puo' attraverso una regular expression
dividere nel buffer della read i due (o piu') "mezzi-record".
La prima parte la concatena al mezzo record messo da parte nella lettura
precedente e via di seguito....
E' leggermente piu' complessa l'elaborazione ma si puo' fare.
E' ovvio che si deve conoscere la struttura del file.

Cosimo.





Maggiori informazioni sulla lista flug-tech