Christian Bliß: Suchfunktion in Perl

Hallo,

habe ein Problem mit meiner Suchfunktion, ich hoffe jemand kann mir helfen!

Programmausschnitt:

open(ARTIKEL, "artikel.txt") or die "$!";
while (<ARTIKEL>) {
  my ($artname, $artnr, $preis) = split(/##/, $_);
  chop($bild);
  if ($artname =~ m/$such_text/i) {
    print qq|Gefunden!|;
  }
  else {
    print qq|Nicht gefunden!|;
  }
}
close(ARTIKEL);

$such_text wird von einem Formular übergeben. Nun zu meinem Problem:
Wenn ich nun nur ein oder zwei Buchstaben eingebe, findet meine Suchfunktion ALLE Artikel, die diese Buchstaben enthalten. Ich möchte jedoch, dass lediglich die Artikel gefunden werden, die die Buchstaben als einzelnes Wort haben.

Bsp:

  • Artikel: Terminator
    Sucheingabe: e
      Mein Programm: "Gefunden!"

So sollte es sein:

  • Artikel: Terminator
    Sucheingabe: terminator
      Mein Programm: "Gefunden!"
    Sucheingabe: termi
      Mein Programm: "Nicht gefunden!"

MfG Christian

  1. Hallo,

    Wenn ich nun nur ein oder zwei Buchstaben eingebe, findet meine Suchfunktion ALLE Artikel, die diese Buchstaben enthalten. Ich möchte jedoch, dass lediglich die Artikel gefunden werden, die die Buchstaben als einzelnes Wort haben.

    Dann setze doch vor und nach den Suchstring einen Vergleich auf Begrezner. Die Möglichkeiten wären hier

    vor dem Wort: Stringanfang oder Whitespace
    nach dem Wort: Stringende oder Whitespace

    Also suchst du nach /(^|\s)$suchstring($|\s)/, dann sollte es klappen.

    Viele Grüße,

    Stefan

    --
    Lass dir das Tanzen NICHT verbieten
    http://tanzverbot.de