norman: programmfluß?

hallo zusammen!

ich bin kurz vorm durchdrehen!!!!! warum funkt dieses einfache?? script nicht? warum wird "find2" nicht ausgegeben? (ich arbeite unter linux-konsole)

my $string = "www.google.de";

if ($string =~ /de/ig) { print "\nfind\n"; }

if ($string =~ /google/ig) { print "\nfind2\n"; }

mfg,
norman

ps: das funkt:

my $string = "www.google.de";

my $speicher = $string;

if ($string =~ /de/ig) { print "\nfind\n"; }

if ($speicher =~ /google/ig) { print "\nfind2\n"; }

  1. Das Problem ist der Parameter "g" - wenn Du damit im gleichen String hintereinander suchst, bleibt der Zeiger nach dem ersten Treffer stehen. Da Du als erstes nach "de" suchst bleibt der Zeiger nach "de" stehen und da kommt halt kein google mehr. Der "g"-Parameter ist bei einer solchen if-Abfrage auch nicht nötig, da hier nur das Vorhandensein und nicht die Anzahl wichtig ist und es ist auch schneller.

  2. Moin, moin!

    Es geht, wenn Du auf die Schalter ig verzichtest.

    Übrigens: Probier mal
    if ($string =~ /google/ig) { print "\nfind2\n"; }
    if ($string =~ /google/ig) { print "\nfind3\n"; }
    if ($string =~ /google/ig) { print "\nfind4\n"; }
    if ($string =~ /google/ig) { print "\nfind5\n"; }
    if ($string =~ /google/ig) { print "\nfind6\n"; }
    if ($string =~ /google/ig) { print "\nfind7\n"; }
    Jede 2. Abfrage funktioniert dann!

    Norbert