[Linux-Biella] Perl e espressioni regolari in array

Daniele Segato daniele.bilug a gmail.com
Ven 23 Apr 2010 11:44:51 CEST


2010/4/23 Claudio M. <cmaffio a bilug.it>:
> Ho un problema con un piccolo codice perl
>
> Ho un array con una serie di espressioni regolari e ho un file che devi
> elaborare
> Come faccio ad esaminare riga per riga il file in input e avere in output
> tutte le righe che soddisfano anche una sola delle espressioni regolari?
>
> Es.
> @trova = ();
> push @trova, "\\spippo\\s";
> push @trova, "\\spluto\\s";
>
> while (<WALTDISNEY>) {
>        chomp;
>        my $riga = $_;
>        foreach $personaggio (@trova) {
>                if ($riga =~ /$personaggio/) {
>                        print $_;
>                }
>        }
> }
>
> questo ovviamente non funziona in quanto mi da un errore di sintassi nella
> riga dell'if
>
> Avete idee?

intanto:
1. se non esci dal foreach al primo match ti può stampare la stessa
riga più volte (sempre se la stessa riga può metchare più volte)
2. prova a leggere qui, forse a te serve use re 'eval';
http://www.sdsc.edu/~moreland/courses/IntroPerl/docs/manual/lib/re.html
3. occhio che se $personaggio è una stringa vuota // in perl significa
"il match precedente"

non so se ti ho aiutato, perl non lo conosco moltissimo,

ciao,
Daniele


Maggiori informazioni sulla lista Linux