Feedback dynamisch ausdrücken Nehmen wir an, möchten wir folgendes mit dem Skript ausdrücken; Die Email Adresse von Franz Muster lautet franz@muster.ch Der Skript sollte Franz Muster und franz@muster.ch aus dem Formular herauslesen. #!/usr/bin/perl print "Content-type: text/html\n\n"; &get_values(); #Zuweisung von $form an lokale Variablen $vname=$form{vname}; $fname=$form{fname}; $email=$form{email}; print qq~ <html><h1> Die email Adresse von $vname $fname lautet $email </h1></html> ~; Die Daten werden in der Variable $form, durch die Routine get_values, gespeichert. Mit $form{feld} können Sie den Wert eines Formularfeldes herauslesen. Feld hängt vom Formular ab (Feldname). Die Daten werden dekodiert und werden an $vname, $fname und $email zugewiesen. Mit dem Symbol # kann man Kommentare in das CGI-Skript einfügen, um die Lesbarkeit zu erhöhen. Wenn alles richtig programmiert wurde, dann sollte das Programm folgendes ausgeben: den Vornamen, den Familiennamen und die Email Adresse. (Die Email Adresse von Franz Muster lautet franz@muster.ch) Das Programm finden Sie hier: #!/usr/bin/perl print "Content-type: text/html\n\n"; &get_values(); # Die Routine speichert die Werte in $form{Feldname} # Wir speichern die Daten in Variablen, die für die Ausgabe # benutzt werden. $vname=$form{vname}; $fname=$form{fname}; $email=$form{email}; print qq~ <html><h1> Die email Adresse von $vname $fname lautet $email </h1></html> ~; # Routine, um die gesendete Daten zu dekodieren sub get_values { if ($ENV{ 'REQUEST_METHOD' } eq 'POST' ) { read(STDIN, $buffer, $ENV{ 'CONTENT_LENGTH' }); } else { $buffer = $ENV{ 'QUERY_STRING' }; } @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $name =~ tr/+/ /; $name =~ s/%([a-fA-F0- 9 ][a-fA-F0- 9 ])/pack( "C" , hex($ 1 ))/eg; $value =~ tr/+/ /; $value =~ s/%([a-fA-F0- 9 ][a-fA-F0- 9 ])/pack( "C" , hex($ 1 ))/eg; $form{$name} = $value; } } |