hi,
habe da ein mittelschweres Problem mit der Grep Funktion:
125 45 1 14 23 58 689 0
69 478 526 245 0
uswSo sehen Freundeslisten aus ( d.h. das da sind die IDs die dann in $friends eingetragen sind )
Mit
if (grep/$id\s/,$friends) ....
wird geprüft ob die eigene ID ( $id ) mit der in der $friends übereinstimmt. Das ganze funktioniert soweit ganz gut, nur ist mir heute leider etwas aufgefallen:
Angenommen jemand hat die ID 8 hätte er EIGENTLICH in keiner der beiden Listen eine Übereinstimmung haben dürfen, sie IST aber da ... sogar in BEIDEN. es liegt nämlich daran , dass nicht die ganze Zahl geprüft wird, sondern die 8 mit der 58 aus der ersten Zeile und der 478 aus der 2. Zeile übereinstimmt.
Jetzt meine Frage: Wie kann ich das verhindern dass er Teile der Zahlen mit berücksichtigt ? Mit
if (grep/\s$id\s/,$friends)
kann ich leider nicht sicherstellen dass immer eine ganze Zahl genommen wird, da sonst die ID die am anfand der Zeile steht NICHT berücksichtigt wird, WEIL sie ja kein Leerzeichen davor hat.
ungeprüft: /\b$zahl\b/
Mein Tipp: Text::Query verwenden zur Suche. Ist effizienter.
Viele Grüße, Rolf
SELFforum - Das Tor zur Welt!
Theoretiker: Wie kommt das Kupfer in die Leitung?
Praktiker: Wie kommt der Strom in die Leitung?