|
|
Sonstige Schleifen: while und until
Perl kennt für Schleifen die Schlüsselworte
[while am Schleifenanfang] $i = 0; while ($i<3) { print "$in"; $i++; } Die Bedingung wird zu Beginn geprüft. Träfe sie zu Beginn nicht zu, würde die Schleife nicht durchlaufen.
[while am Schleifenende] $i = 0; do { print "$in"; $i++; } while ($i<3); Da hier die Bedingung am Ende geprüft wird, würde die Schleife einmal durchlaufen, auch wenn die Bedingung bereits zu Anfang nicht zuträfe.
[until am Schleifenanfang] $i = 0; until ($i>=3) { print "$in"; $i++; }
Im Gegensatz zur ersten
[until am Schleifenende] $i = 0; do { print "$in"; $i++; } until ($i>=3); Zu guter Letzt noch die vierte mögliche Variante. Hier wird ebenfalls die Schleife mindestens einmal durchlaufen, bevor die Bedingung geprüft wird.
Die folgende Schleife ist ein Beispiel für das Aufspalten eines Arrays
in einzelne Skalare. Die Bedingung ist lediglich das Array. Hier wird genutzt,
dass die Umformung eines Arrays in ein Skalar die Anzahl der Elemente
ergibt. Sobald das Array also leer ist, wird es 0 zurückgeben. Diese 0 wird
von
[Paarweises Abführen] while (@array) { ($a, $b, @neu) = @array; print $a." ".$b."n"; @array = @neu; } Im Innern der Schleife wird das Array durch die Zuweisung jeweils in zwei Skalare und ein neues Array aufgespalten. Die Skalare werden paarweise ausgegeben und das Restarray dem Original zugewiesen. Im Zusammenhang mit CGI-Skripten sind immer wieder Strings wie der folgende auszuwerten. Sie enthalten den Inhalt einer Eingabemaske. Ziel ist es, die einzelnen Eingaben zu trennen. Die einzelnen Eingaben sind als Zuweisungen dargestellt, also links Variable, dann ein Gleichheitszeichen und dann der Wert. Die Zuweisgungen jeweils sind durch ein & getrennt.
Name=Willemer&Adresse=Ihre+Adresse%0D%0AOrt&Anrede=Frau Das Skript soll die Zeichenkette aufbrechen und in einem Hash ablegen und den Hash ausgeben. Statt der Ausgabe würde man in der Praxis die Werte in eine Datenbank stellen oder zu einer Datenbankabfrage umformen.
[CGI-Zerlegung] #!/usr/bin/perl -w use strict; my %input; my $zeile; my $key; my $wert; my @zuweisungen; my @neu;
my $input = "Name=Otto&Adresse=Mein+Weg%0D%0AOrt&Anrede=Frau"; @zuweisungen = split("&", $input); while (@zuweisungen) { ($zeile, @neu) = @zuweisungen; ($key, $wert) = split("=", $zeile); $wert = s/+/ /g; # + durch leer ersetzen! $input{$key} = $wert; @zuweisungen = @neu; } # Ausgabe foreach $key(sort keys(%input)) { print "Key = $key, Value = $input{$key}n"; }
|
|
Copyright © Rheinwerk Verlag GmbH 2003
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken.
Ansonsten unterliegt das Openbook denselben Bestimmungen wie die gebundene Ausgabe:
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt.
Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie
Einspeicherung und Verarbeitung in elektronischen Systemen.
Nutzungsbestimmungen | Datenschutz | Impressum
Rheinwerk Verlag GmbH, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, service@rheinwerk-verlag.de
Cookie-Einstellungen ändern