Thread Wort filtern oder $1 resetten (3 answers)
Opened by grepex at 2009-08-19 12:05

Gast grepex
 2009-08-19 12:05
#124397 #124397
Hallo ich habe folgendes (Anfaenger-)Problem:
ich habe einen Text den ich in die Liste @output einlese. In manchen Zeilen befinden sich Worter die der Regex entsprechen. In anderen Zeilen nicht. Mit folgender Implementation versuche ich nur die Worter in entsprechenden "Trefferzeilen" herauszufiltern und in die Listen @essids anzuhaengen. Mein Problem ist jedoch dass, bei meiner Implementation $1 nicht "resettet" wird, dh. fuer jede nicht treffer Zeile bekomme ich zusaetzlich das Wort in $1 des vorigen Treffers nocheinmal. Nun frage ich mich ob ich $1 irgendwie "resetten" kann in jedem Schleifendurchlauf oder ob es eine andere / eifachere Moeglichkeit gibt.

Code (perl): (dl )
1
2
3
4
5
6
my @essids;
foreach (@output){
    $_ =~ /.*ESSID:\"(.*)\"/x;
    push @essids, $1 if $1;
}
print join "\n", @essids;


zunaechst hatte ich es mit folgendem versucht,
Code (perl): (dl )
grep /.*ESSID:\".*/, @output;

aber da bekomme ich immer noch den ganzen Wust vor und nach dem " in den Treffer - dabei will ich wirklich nur ein Wort. zB eine Zeile:
Code: (dl )
   ESSID:"foobar"

sollte mir in @essids nur foobar anhaengen, den Rest nicht.

Danke im voraus

View full thread Wort filtern oder $1 resetten