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

Strings (Zeichenketten)



Allgemeines



Datenfluss bei CGI- Übertragung

Bei einer Übergabe von Daten eines Formulars werden sämtliche Angaben (e.g. Namen der Formularelemente& dazugehörige Werte) in einem einzigen String zusammengefasst, nach ganz bestimmten Regeln:

- 'Die einzelnen Formularelemente inclusive ihrer Daten werden durch ein kaufmännisches & voneinander getrennt.
Name und Daten eines Formularelements werden durch ein Istgleichzeichen = voneinander getrennt.
- Leerzeichen in den eingegebenen Daten (z.B. bei mehreren Wörtern) werden durch ein Pluszeichen + ersetzt.
- Alle Zeichen mit den ASCII-Werten 128 bis 255 (hexadezimal 80 bis FF) werden durch eine Hexadezimalzeichenfolge umschrieben, eingeleitet durch ein Prozentzeichen % und dahinter der Hexadezimalwert des Zeichens (z.B. wird der deutsche Umlaut ö durch %F6 umschrieben).
- Alle Zeichen, die in diesen Regeln als Steuerzeichen vorkommen (also &, +, = und %) werden ebenfalls hexadezimal umschrieben, und zwar genau so wie höherwertige ASCII-Zeichen.'     (SelfHTML)

Wichtig: Formulare definieren/ GET und POST

Vom CGI- Programm muss dieser zusammenhängende String nun zuerst eingelesen, wieder getrennt und decodiert werden:

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


@Formularfelder = split(/&/, $Daten);
foreach $Feld (@Formularfelder)
 {
  ($name, $value) = split(/=/, $Feld);
  $value =~ tr/+/ /;
  $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
  $value =~ s///g;
  $Formular[$i] = $name;
  $i = $i + 1;
  $Formular[$i] = $value;
  $i = $i + 1;
 }

"Mit der Anweisung @Formularfelder = split(/&/, $Daten); wird die Zeichenkette $Daten in eine Liste verwandelt. Als Trennzeichen, das aus dem Datenstrom Listenelemente macht, wird das kaufmännische Und (&) angegeben. Durch dieses Zeichen sind die im Formulardatenstrom die einzelnen Formularfelder voneinander getrennt.

Anschließend werden die einzelnen Felder der neuen Liste @Formularfelder in einer foreach-Schleife behandelt. Zuerst wird jedes Formularfeld in zwei Bestandteile zerlegt, wobei als Trennzeichen das Istgleichzeichen angegeben wird. Die beiden Teile werden in den Skalaren $name und $value abgelegt. In $name steht dann genau das, was in dem betreffenden HTML-Formularelement mit der Angabe name= definiert wurde. In $value steht das, was der Anwender als Wert für das betreffende Formularelement eingegeben oder ausgewählt hat. Angenommen, das HTML-Formular enthält ein einzeiliges Eingabefeld, das mit <input name="Spitzname" size=60 maxlength=60> definiert wurde. Weiter angenommen, der Anwender hat in diesem Feld "Hotzenplotz" eingegeben. Dann steht für dieses Formularfeld im Skalar $name der Wert Spitzname, und im Skalar $value steht der Wert Hotzenplotz.

Mit den Suche-Ersetze-Vorgängen in den weiteren Anweisungen der for-Schleife werden die störenden Steuerzeichen, die noch aus dem Formulardatenstrom übrig geblieben sind, entfernt.

Die Daten des Formulars werden schließlich in eine Liste @Formular geschrieben. Die geraden Elemente dieser Liste, also $Formular[0], $Formular[2], $Formular[4] usw. enthalten die Feldnamen, zu denen der Anwender Angaben gemacht hat. Die ungeraden Elemente, also $Formular[1], $Formular[3], $Formular[5] enthalten die jeweils zugehörigen Daten, die der Anwender eingegeben oder ausgewählt hat. Diese Liste können Sie im weiteren Verlauf des Perl-Scripts weiterverarbeiten."     (SelfHTML)



Zeichenketten manipulieren