linux-l: wiedermal perl

Ulrich Wiederhold U.Wiederhold at gmx.net
Mo Okt 29 16:08:39 CET 2001


Hallo,
ich habe folgendes Problem.
Ich möchte im key eines hashs nach einem String suchen, z.B. mehreren Wörtern. Die Sucher
soll erfolgreich sein, wenn alle diese Wörter in beliebiger Reihenfolge
gefunden werden.


$string = "I like music";

my (@search) = split /\s/, $string;

foreach my $key (keys %locator_hash) {
    my $counter = 0;
    foreach my $word (@search) {
      if ($key =~ /$word/) {
      $counter++;
      }
    }
    if ($counter == $#search+1) {
    push(@result, $locator_hash{$key});
    }
} 

So funktioniert es. Ich teile den String an den Whitespace Zeichen und
tu die Wörter in ein Array. Dann checke ich jeden key des hashs auf
jedes Wort und wenn die Suche erfolgreich ist erhöhe ich den counter um
1. Wenn der Wert des Counters dem der Wörter entspricht, tue ich die zum
Key gehörenden Daten in ein result-array.
Soweit funktioniert das. Mein Problem ist, daß die ganze Prozedur
ziemlich viel CPU-Power schluckt.

Hat jemand ne bessere Lösung?

Gruß
uli

-- 
'The box said, 'Requires Windows 95 or better', so i installed Linux - TKK 5



Mehr Informationen über die Mailingliste linux-l