Perl, espressioni regolari e new line

muflone82

Nuovo Utente
1 Ott 2012
3
0
0
Prima di tutto ciao a tutti ;-)

avrei bisogno del vostro aiuto.

Dovrei fare un piccolo programmino di estrazione di dati da un file con il perl e le espressioni regolari.

Io vorrei inserire in un array tutto quello che va da un punto noto ad un altro punto noto. Per farlo ho pensato alle espressioni regolari. Tutto funziona perfettamente se non ho il new line; quando ho anche questo non mi funziona nemmeno inserendo il modificatore \s.

Esempio:
Query= hopAI1
Length
=786
Score E
Sequences

Vorrei selezionare tutto quello che va da Query= hopAI1 a Score.
Ho provato con:
@Selezionato = $BLAST =~ m/Query= hopAI1.{0,}Score/sg

Vorrei avere in output:
print @Selezionato;
Query= hopAI1
Length
=786
Score

Teoricamente con il modificatore /s dovrebbe considerarmi \n come un qualsiasi carattere riconoscibile con .

Help :-)

Ciao ciao
 
Volevo aggiungere la parte iniziale del codice, non vorrei che l'errore fosse lì:

while ($BLAST = <IN1>) {
@Selezionato = $BLAST =~ m/Query= hopAI1.{0,}Score/sg
}
print @Selezionato;
 
Ciao Ragazzi,

sono riuscito a risolvere, l'errore era nella lettura del file. Io leggevo con while e quindi riga per riga mentre dovevo leggere tutto in una riga con lo slurp mode.

$variabile = do { local $/; <IN1> };

Magari potrà essere utile ad altri...

Ciao ciao
 

Discussioni simili