Marcus Vieß: Suchscript sucht nicht richtig ...

open (FH, "$searchdata");

while(my $search = <FH>){        #Zeilenweise einlesen
  if ($search =~ m/$such/g) {   #Suchen nach dem Wort: und
  print "<font size=+2>$search<br>";
  }
}
  close(FH);

Datafile sieht z.B. so aus :

...

<a href="http://www.blutsdvdpage.de/ab18/cgi-bin/review.cgi?zombieholocaust"><font size=+1>Zombie Holocaust</a>
<a href="http://www.blutsdvdpage.de/ab18/cgi-bin/review.cgi?woodoo"><font size=+1>Woodoo - Schreckensinsel der Zombies</a>
<a href="http://www.blutsdvdpage.de/ab18/cgi-bin/review.cgi?zombie3"><font size=+1>Zombie 3</a>
<a href="http://www.blutsdvdpage.de/ab18/cgi-bin/review.cgi?hausanderfriedhofsmauer"><font size=+1>Haus an der Friedhofsmauer</a>
<a href="http://www.blutsdvdpage.de/ab18/cgi-bin/review.cgi?grossangriffderzombies"><font size=+1>Großangriff der Zombies</a>

...

So, finden tut das script jetzt

Zombie 3
Zombie Holocaust
Großangriff der Zombies

aber halt nicht Woodoo - Schreckensinsel der Zombies.

Versteh ich nicht ...

  1. Zur Info:

    Suchen tu ich nach "Zombie" ...

    1. Mhhh ich hab mal rumexperimentiert.

      wenn ich nach "zombie" suche findet er halt nur die drei.

      Bei "Zombie" klappts.

      um "Woodoo - Schreckensinsel der Zombies" zu finden müsste er quasi Groß- Kleinschreibung ersetzen und das "s" am ende.

      Macht er nicht, sondern anscheinend nur eine fehlende Sache.

      Wie bekomme ich Ihn dazu das er beides ersetzt.

      oder hab ich nen anderen Fehler drin ?

      1. Hallo,

        wenn ich nach "zombie" suche findet er halt nur die drei.

        weil bei diesen dreien 'zombie' im URL vorkommt, beim vierten aber nicht.

        um "Woodoo - Schreckensinsel der Zombies" zu finden müsste er quasi Groß- Kleinschreibung ersetzen und das "s" am ende.

        if ($search =~ m/$such/g) {   #Suchen nach dem Wort: und

        Du verwendest den Option 'g' für die Suche, obwohl das in diesem Falle nicht notwengig ist, sondern die Suche nur langsamer macht.
        Wenn Du die Groß-Kleinschreibung ignorieren willst, dann kannst Du das mit der Option 'i' machen.
        siehe auch http://selfhtml.teamone.de/cgiperl/sprache/regexpr.htm#flags bzw. http://www.perldoc.com/perl5.8.0/pod/perlop.html#Regexp-Quote-Like-Operators

        Grüße
          Klaus

      2. Guten Morgen :)

        Ich hab zwar keinen Plan von Perl, aber in den meisten Sprachen gibts doch funktionen, um Teilstring in einem String suchen zu lassen, in Perl doch sicher auch, oder? Verknüpft mit dem Ignorieren von Groß- und Kleinschreibung dürfte das zu dem gewünschten Ergebnis führen ... kannst ja zusätzlich Optionen für die Suche verwenden, z.B. angeben lassen, ob nur ein ganzes Wort gesucht werden soll, Groß- und Kleinschreibung ignorieren, etc. ...

        Grüße, Mario

  2. use Mosche;

    Begrüssungen werden hier gerne gesehen.

    if ($search =~ m/$such/g) {   #Suchen nach dem Wort: und

    Du brauchst hier nicht den modifier g (der ist notwendig bei ersetzungen und wenn du Dinge mehr als einmal finden willst und sie noch zwischenspeicherst. Was du willst ist 'i', welches Groß/Kleinschreibung ignoriert.

    use Tschoe qw(Matti);

    Verabschiedungen auch.

    --
      Anyone who quotes me in their sig is an idiot. -- Rusty Russell.