-+  Associazione
-+  Documenti
 |-  Modern Perl
 |-  Bibliografia
 |-  Articoli
 |-  Talk
 |-  Perlfunc
 |-  F.A.Q.
 |-  F.A.Q. iclp
-+  Eventi
-+  Community
-+  Blog
-+  Link
Corso di Perl



 


indietro

[7] Come posso manipolare file contenenti record a lunghezza fissa? lunghezza fissa file, record a lunghezza fissa

Il modo più efficiente è usare pack() e unpack(). È più veloce rispetto all'uso di substr() quando si ricevono molte, molte stringhe. È più lento se se ne ricevono poche.

Ecco un pezzo di codice d'esempio per dividere in pezzi e poi rimettere insieme alcune linee di input in formato fisso, in questo caso dall'output di un normale ps stile Berkeley:

    # esempio di linea in input
    #   15158 p5  T      0:00 perl /home/larsen/script/
    my $PS_T = 'A6 A4 A7 A5 A*';
    open my $ps, '-|', 'ps';
    print scalar <$ps>;
    my @campi = qw( pid tt stat time command );
    while (<$ps>) {
        my %processo;
        @processo{@campi} = unpack($PS_T, $_);
	for my $campo ( @campi ) {
	    print "$campo: <$processo{$campo}>\n";
	}
	print 'line=', pack($PS_T, @processo{@campi} ), "\n";
    }

Abbiamo usato uno hash slice in maniera da manipolare facilmente i campi di ogni riga. Immagazzinare le chiavi in un array significa che è facile operarvi come gruppo oppure interarvi con un for. Evita anche di inquinare il programma con variabili globali e l'utilizzo di riferimenti simbolici.

vedi in inglese

AUTORE E COPYRIGHT

Copyright (c) 1997, 1998, 1999, 2000, 2001 Tom Christiansen e Nathan Torkington. Tutti i diritti riservati.

Questa documentazione è libera; puoi ridistribuirla e/o modificarla secondo gli stessi termini applicati al Perl.

Indipendentemente dalle modalitè di distribuzione, tutti gli esempi di codice in questo file sono rilasciati al pubblico dominio. Potete, e siete incoraggiati a farlo, utilizzare il presente codice o qualunque forma derivata da esso nei vostri programmi per divertimento o per profitto. Un semplice commento nel codice che dia riconoscimento alle FAQ sarebbe cortese ma non è obbligatorio.

D:
Progetti e documenti in rilievo
Corso di Perl Progetto pod2it
D:
La ML di Perl.it
mongers@perl.it è la lista ufficiale di Perl Mongers Italia per porre quesiti di tipo tecnico, per rimanere aggiornato su meeting, incontri, manifestazioni e novità su Perl.it.
Iscriviti!
D:
Annunci Google