Regulärer Ausruck findet Übereinstimmung nicht?
Markus Trusk
- perl
Hola,
Habe ein besonders seltsames Problem. Ich lese Namen aus einem Flat File ein, die Zeile für Zeile aufgelistet sind. Da das Script viel zu umfangreich wäre, habe ich den Problemteil mit einem kleinen Script nachgestellt, und habe ich hier das selbe Problem. Es wird keine Übereinstimmung gefunden, aber wieso? Ich kann mi das nicht erklären.
#!/usr/bin/perl -w
use strict;
my $name = '<xNeT//orKx>';
my $inhalt = '<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>';
print "Content-type:text/html\n\n";
if ($inhalt =~ /$name/si) {
print "$name gefunden!\n";
} else {
print "$name nicht gefunden!\n";
}
Markus Trusk.
huch ...
ist das jetzt ein "*g" am Sonntagabend? Ich vermute, daß du anstelle von
'<xNeT//orKx>'
einfach mal
'<xNeTworKx>'
schreiben solltest ;-)
ähm ... wieso spielst du seit kurzem mit deinem "Forumsnamen" herum? Bei xNeTworKx (oder wie auch immer du das geschrieben hattest) wußte man ja wenigstens etwas Bescheid, wer da grade schreibt.
Grüße aus Berlin
Christoph S.
Hola,
'<xNeT//orKx>'
einfach mal
'<xNeTworKx>'
schreiben solltest ;-)
Nein, weil in dem String ja alle stehen kann, was will, also auch ;.
ähm ... wieso spielst du seit kurzem mit deinem "Forumsnamen" herum? Bei xNeTworKx (oder wie auch immer du das geschrieben hattest) wußte man ja wenigstens etwas Bescheid, wer da grade schreibt.
Weil ich diesen Namen schon nicht mehr sehen kann, und da ihn jeder dauernd falsch schreibt (in meinem privaten Baord) habe ich beschlossen, einen anderen Namen zu verwenden, wobei Markus Trusk auch nicht mein richtiger Name ist. (Zumindest der Nachname ist erfunden, bzw. von dem Film Cube2-Hypercube abgschaut :) (= der Name eines Hackers in dem Film). Mein Vorname ist wirklich Markus )
Dass jeder weiß, dass ich es bin, lasse ich stets das Foto von meinem assimilierten Gesicht im Forum anzeigen :)
Markus Trusk.
Hallo Markus,
my $name = '<xNeT//orKx>';
my $pat = quotemeta $name;
my $inhalt = '<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>
<xNeT//orKx>';print "Content-type:text/html\n\n";
if ($inhalt =~ /$name/si) {
so besser:
if($inhalt =~ /$pat/)
Du musst die Sonderzeichen maskieren (in diesem Fall macht das
quotemeta für dich).
Grüße,
CK
Hola,
Vielen dank. Du hast mir wie immer geholfen, jetzt funktioniert es. Übrigens habe ich von der Funktion quotemeta noch nie gehört, kein Wunder, dass ich also zu keiner Lösung fand. Übrigens habe ich zuerst nämlich versucht wieder decode_entities auf beide Strings anzuwenden, aber das half auch nichts.
Markus Trusk.