Thema: alle Treffer bei m/$match/s erhalten

Wahrscheinlich ist es trivial, aber ich stehe gerade voll auf der Leitung. Ich habe einen komplizierten Ausdruck den ich matchen möchte(/xsi). Jetzt ist das Problem aber, das ich nicht nur einen Treffer haben möchte, sondern alle. Sprich, statt if ne Schleife... foreach gibt 10 mal das selbe aus, while endet nie, for geht nicht, da ich die Anzahl der Übereinstimmungen nicht weiß... Ach ja, meine Sprache ist Perl.
hatte auch schon an G gedacht, aber nicht zum Funktionieren überreden können.
So ergibt es im Moment einen Treffer:

if( $string=~/$match/xsi)
{
    #Anweisung für x. Element
}

Wie muß ich das jetzt verändern, damit ich alle Treffer erhalte? Ohne s, mit g wäre es kein Problem, aber ich brauche das s, da es über mehrere Zeilen geht. Hilfe!!! Bitte!

Gruß
Mirko

Wer einen Rechtschreibfehler findet darf ihn behalten.

2

Re: alle Treffer bei m/$match/s erhalten

N'abend,

wahrscheinlich geht's mir ähnlich wie Dir, dann stehn
wir beide auf Schläuchen.
Aber ginge nicht sowas?:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">$r='text.txt';

open (f, "<$r");

while(<f>)
{$_=~s/n//g;
  $_=~s/^s*//g;
  $x.=$_;
};

foreach($x=~/d?sch.{2}/g){print $_."n" };

close(f);[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">Mal angenommen, ich hab' ne text-Datei wie die:

</font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">warumbel
        qua1schrumbel
sarumbel
  so , jetzt 2schreib i3sche hier mal4sc
      hwas rrrein5s
                 cheinfaltslos

       6schuhu


  7schabadabbadu8schöl[/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">gruß

matho

3

Re: alle Treffer bei m/$match/s erhalten

Hi matho!
Puh, da bin ich ja beruhigt, daß es nicht nur mir so geht. Habe jetzt Deine Methode versucht. Klappt gut! Warum des aber net vorher, bzw. mit //s geht. So a Scheiß.
Ach ja, dei skript hab ich a weng verkürzt. Weiß net ob es performanter ist... Nur ne Spielerei:
  </font><blockquote><font size="1" face="Verdana, Helvetica, sans-serif">Code:</font><hr /><pre style="font-size:x-small; font-family: monospace;">
$r='text.txt';
open (f, "<$r");
while(<f>)
{
    chomp($x.=$_);
}

foreach($x=~/d?sch.{2}/g)
{
    print $_."n";
}
close(f);
  [/code]</blockquote><font size="2" face="Verdana, Helvetica, sans-serif">Danke!

Gruß
Mirko

Wer einen Rechtschreibfehler findet darf ihn behalten.

4

Re: alle Treffer bei m/$match/s erhalten

Klar, aber ich hab hier grade win2k, und da kommt chomp nicht so günstig.
Freut mich, dasses klappt.

gruß

matho

5

Re: alle Treffer bei m/$match/s erhalten

Äh, warum? Habe gerade mit W2k getestet... kein Problem. Deswegen habe ich ja chomp und nicht chop genommen. Oder was meinst Du damit?

Gruß
Mirko

Wer einen Rechtschreibfehler findet darf ihn behalten.

6

Re: alle Treffer bei m/$match/s erhalten

Moin,

damit mein ich, daß ich manchmal ziemlich blöd bin. Ich hatte nicht mehr an die führenden Leerzeichen in meiner eignen Beispieldatei gedacht.......

gruß
matho