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



 


indietro

[4] Ho messo un'espressione regolare in $/ ma non ha funzionato. Cosa c'è di sbagliato? $/, regex in $INPUT_RECORD_SEPARATOR, regex in $RS, regex in

Fino a Perl 5.8.0, $/ deve essere una stringa. Questo potrebbe cambiare nel 5.10, ma non ci sperate. Fino ad allora, potete usare questi esempi se davvero ne avete bisogno.

Se avete File::Stream, questo è semplice.

	 use File::Stream;
         my $stream = File::Stream->new(
                  $filehandle,
                  separator => qr/\s*,\s*/,
         );
	 print "$_\n" while <$stream>;

Se non avete File::Stream, dovete fare un po' più di lavoro.

Potete usare la forma a quattro argomenti di sysread per aggiungere ininterrottamente in un buffer. Dopo che avete aggiunto al buffer, controllate se avete una linea completa (usando la vostra espressione regolare).

       local $_ = "";
       while( sysread FH, $_, 8192, lunghezza ) {
          while( s/^((?s).*?)il_vostro_pattern/ ) {
             my $record = $1;
             # qui vanno le cose da fare.
          }
       }

Potete fare la stessa cosa con il foreach ed un match usando il flag c e l'anchor \G, se non vi importa che il vostro intero file sia in memoria alla fine.

       local $_ = "".
       while( sysread FH, $_, 8192, lunghezza ) {
          foreach my $record ( m/\G((?s).*?)il_vostro_pattern/gc ) {
             # qui vanno le cose da fare.
          }
          substr( $_, 0, pos ) = "" if pos;
       }

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