[Vienna-pm] Suchen nach Begriffen innerhalb strukturierter Datei

Christian Schoeller c_p_s at gmx.net
Fri Jan 2 15:31:52 CST 2004


Liebe Liste!

Fuer mein Informatik-Referat nach den Weihnachtsferien bereite ich das
Thema Perl auf, das mit einem (kleinen) praktischen Beispiel
abschlieszen soll.

Ich habe hierzu eine Webseite mit zwei Formularen: im einen sind
(Vorname|Nachname|Strasse|PLZ|Wohnort) einzugeben; diese Daten werden
- schoen formatiert - in der Textdatei "dbase" abgespeichert. Im
zweiten Formular auf der gleichen Seite ist ein Begriff einzugeben 
("such"), nach dem das Skript "search.pl" die Textdatei durchsuchen
soll und bei positivem Ergebnis den kompletten Datensatz in einer
neuen Webseite ausgeben soll.

-- <dbase exemplarisch> --
Vorname: Benjamin
Nachname: Bluemchen
Strasse: Zuckerstueckchenstrasse 1
PLZ: 0101
Ort: Neustadt
-- </dbase> --

-- <search.pl> --
#!/usr/bin/perl
use CGI qw(:standard);
print "Content-type: text/plain\n\n";
my $such=param('such');
open DBASE, "<dbase";
my $zeilen=join '', <DBASE>;
if ($zeilen=~(/.*(Vorname.*?$such.*?\n{2}).*/is)) {
    print $1;
} else {
    print "Keine Entsprechung gefunden!\n";
}
-- </search.pl> --

Mein Problem ist jetzt, dass "search.pl" natuerlich immer nur _einen_
Datensatz zurueckgibt. Falls Benjamin nun heiraten sollte, wuerde
seine Frau mit dem Suchbegriff "Bluemchen" nicht mehr gefunden werden
(oder eben Benjamin selbst, abhaengig davon, wo er in "dbase"
eingetragen ist).

Selbst wenn ich die RegExp mit dem Zusatz "g" versehe, funktioniert es
nicht:

# Die Speichervariablen behalten normalerweise ihre Werte bis zum
# naechsten erfolgreichen Mustervergleich. [1]

Ich frage mich nun, wie ich es schaffe, mehrere Datensaetze ausgeben
zu koennen, falls "such" auch auf mehrere zutrifft. Die Schwierigkeit
liegt IMHO darin, dass nach abgearbeiteter if-Bedingung $1 genau einen
Datensatz als Wert hat.

Moeglicherweise liege ich allerdings auch _komplett_ falsch und mein
Skript hat sowieso den falschen Ansatz.

Danke fuer die Hilfe!

C., der euch wahrscheinlich mit Newbie-Problemen konfrontiert...

[1] Phoenix, Tom; Schwartz, Randal L.: Einfuehrung in Perl. Koeln:
O'Reilly 2002. S 135. Z 1f.

-- 
Christian Schoeller {Student}  | "The true source of man's
MAIL {mailto:c_p_s at gmx.net}    | inhumanity to man is the 
HTTP {http://www.yaup.at.tt}   | ability to feel."
EBAY {c_p_s!}                  | --Equilibrium (Prolog)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 186 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20040102/25217f70/attachment.bin


More information about the Vienna-pm mailing list