Denis: reg exp findet zx9r in zx9rirgendwas nicht?

Beitrag lesen

zx9rirgendwas =~ /$zx9r/gi;

MIST, verwünschter, Sorry, das bringt natürlich schon ein TRUE...

Anders gefragt, folgender Quelletext gibt als letztes unter dem Wörtchen "Neue" diese Liste aus:

Biker Motorradfahren Links Gõstebuch ZX9R zx9rirgendwas

ZX9R soll - wenn man caseinsensitive denkt - aber nicht mehr in der Liste sein, weil da ja auch zx9rirgendwas steht und's somit schon "teil" der Liste ist. Hoffe, es ist klar, was ich will. Jedes Stichwort was schon in der Beschreibung ist fleigt aus der Stichwortliste - klappt auch schon.
Dann muß noch jedes Stichwort, was (caseINsensitive) mehrmals in den Stichworten ist auch noch raus.... klappt, bis auf bei ZX9R... :-(

Naja, hier das Script dazu:

$in{'Description'} = "Alles für Motorradfahrer und die Freunde des Bikens. Hier findet Ihr ein Forum, erlebt Forumsdiskussionen und mehr! Alles zur ZX9-R";
 $in{'Stichworte'} = "für Motorrad motorrad Biker Biken Forums Motorradfahren Forum zx9r Links LINKS Gästebuch Links ZX9R ZX9R zx9rirgendwas zx9-r ZX9-R";
 print "Beschreibung:\n$in{'Description'}\n\n";
 print "\nAlte:\n";
 print "$in{'Stichworte'}\n";

## "Keine Stichworte, die schon in der Beschreibung sind"-Modifikation by Denis Campbell
    ## Wir ersetzten zunaechst die nervigen User-Stichwort-Delimeter durch Leerschritte:
    $in{'Stichworte'} =~ s/[,:\_/\]/ /g;
    $in{'Stichworte'} =~ s/\s{2,}/ /g; ## Danach fliegen eventuelle mehrfache Leerschritte raus.

## Die Stichworte als einzelne Elemente einer Liste zuweisen
 @stichworte = split(/\s+/,$in{'Stichworte'});

## Jetzt alle Stichworte, die schon in der Beschreibung sind rausschmeissen
 $cnt = 0;
 while ($cnt <= $#stichworte ) {
  if ( $in{'Description'} =~ /$stichworte[$cnt]/i ) {
   print "$stichworte[$cnt] ist in der Beschreibung und fliegt raus...\n";
   splice(@stichworte,$cnt,1);
  } else {
   print "$stichworte[$cnt] darf bleiben...\n";
   $cnt++;
  }
 }

print "\n\n\n";
 print "@stichworte";
 print "\n\n";

## Gucken, was jetzt noch in den Stichworten doppelt ist:
 $cnt = 0;
 my $tmpstichworte = "@stichworte";
 print $tmpstichworte . "\n";
 my @einfacheTreffer;
 foreach $stichwort (@stichworte) {
  $anzahl = 0;
  while ($tmpstichworte =~ /$stichwort/gi) {
     $anzahl++;
    }
  print "$& ->";
  if ($anzahl > 1) {
   print "Mehr als ein Treffer fuer $stichwort!\n";
   splice(@stichworte,$cnt,1);
  }
  $cnt++;
 }

## Die Liste der Stichworte wieder zu einem String konvertieren
 $in{'Stichworte'} = "@stichworte";

print "\n";
 print "\nNeue:\n";
 print $in{'Stichworte'};
 print "\n";

Danke für Tips,
Gruß
Denis