HTML & CSSJavascriptPerlPHPIndex | Download | Suche 

SYNTAX
Allgemeines | Konstanten | Variablen | Zeichenketten | Zahlen | Operatoren | Kontrollstrukturen | Funktionen, Subs | Bibliotheken | Ein- und Ausgabe | Dateien lesen& schreiben | Suchen& ersetzen | reguläre Ausdrücke | Module
WEITERES Beispiel- Perlscripts | Links zum Thema Perl

Ein- und Ausgabe



Eingabe

Je nach Request Method (GET/POST) werden die (z.B. Formular-)daten auf unterschiedliche Art übermittelt:

GET ist schneller, es kann ein konkreter URL gebookmarkt werden (Beispiel Suchmaschinen: http://www.google.com/search?q=CSS-Kurs), eignet sich aber nur bei kleineren Datenmengen.

Das CGI- Programm verlangt je nachdem GET oder POST oder ist auf beides ausgelegt:

if($ENV{'REQUEST_METHOD'} eq 'GET') {
  $buffer = $ENV{'QUERY_STRING'}
 }
else {
  read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
 }

(siehe: auch Formulare definieren)



Ausgabe

Dateien auf die Standardausgabe zu schreiben ist einfacher, dies erfolgt mit der Funktion print. Wichtig ist die erste Zeile- print "Content-type: text/html\n\n"; -, damit wird eine HTML- bzw. Text-Datei erstellt.

#! /usr/bin/perl
print "Content-type: text/html\n\n";
print "<b>Hallo Kloake!</b>\n";


ein erstes Beispielprogramm

Mit dem bis jetzt erworbenen Wissen sind nun erste Beispielprogramme möglich:

#! /usr/bin/perl
#Eingabe auslesen
if($ENV{'REQUEST_METHOD'} eq 'GET') {
  $Bildnr = $ENV{'QUERY_STRING'}
 }
else {
  read(STDIN, $Bildnr, $ENV{'CONTENT_LENGTH'});
 }

#Ausgabe
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>Beyond Material - Minus 8 - image $Bildnr</title>\n";
print "<link rel=\"stylesheet\" type=\"text/css\" href=\"-8.css\">\n";
print "</head>\n";
print "<body>\n";
print ("<img src=\"../min8/i" ,$Bildnr, ".jpg\">");
print "</body>\n";
print "</html>\n";


STDIN/ Query String splitten und decodieren

Beim Übertragen von Formulardaten wird alles zusammengehängt, Leer- und Sonderzeichen werden ersetzt. Deshalb muss 'im Normalfall' die STDIN bzw. der Query String wieder gesplittet und decodiert werden, um damit arbeiten zu können:

#! /usr/bin/perl

#Eingabe auslesen (POST)
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

#String aufsplitten, Zeichen ersetzen, Liste erzeugen
@pairs = split(/&/, $buffer); # Name-Werte-Paare splitten
 foreach $pair (@pairs) {
  ($name, $value) = split(/=/, $pair);

# Un-Webify plus signs and %-encoding
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s///g;
  $value =~ s/<([^>]|\n)*>//g;
  $FORM{$name} = $value;
  }

Auf die einzelnen Felder kann nun mit $FORM('name_des_feldes_im_html_doku') zugegriffen werden. Angenommen: ein Form mit zwei Input-Feldern, eines mit name="name", das andere mit name="email". Variablen:

# Strings der Formularfelder in Variablen speichern
$name = "$FORM{'name'}";
$email = "$FORM{'email'}";