Galileo Computing < openbook >
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung
Galileo Computing - Bücher zur Programmierung und Softwareentwicklung


'Wie werde ich Unix-Guru' als Buch bestellen
A. Willemer
Wie werde ich UNIX-Guru
I  ANWENDUNG
Know-How für Unix/Linux-User: Einführung, Shell, Befehle, Hilfe, Arbeit mit Dateien, Editoren, Reguläre Ausdrücke, nützliche Tools, Hardware.

II  ADMINISTRATION
Tools, Systemstart, Benutzer verwalten, Hardware konfigurieren, Software installieren, Datensicherung, Tuning, Kernel

III  NETZWERK
Client/Server Systeme, TCP/IP, Routing, IPv6, Internet-Dienste, DHCP, Webserver, Firewalls

IV  DAS X-WINDOW SYSTEM
Die grafische Oberfläche von UNIX einrichten und nutzen

V  PROGRAMMIERUNG VON SHELLSKRIPTEN
Automatisieren von Tasks durch Shell-Skripte.

VI  PERL
Interpreter, Syntax, Variablen, Steuerung, Funktionen, UNIX-Aufrufe, GUIs mit Tk

VII  PROGRAMMIERWERKZEUGE
C-Compiler, Analyse-Tools, CVS, yacc, diff

VIII  UNIX-SYSTEMAUFRUFE
UNIX-Befehle in eigenen Programmen nutzen

IX  LITERATUR
Weiterführende Literatur zu UNIX und LINUX

 
Galileo Computing / <openbook> / "Wie werde ich UNIX-Guru ?"
« foreach Ablaufsteuerung Funktionen »

Sonstige Schleifen: while und until

Perl kennt für Schleifen die Schlüsselworte while und until. Beim while bleibt das Programm innerhalb der Schleife, sofern die Bedingung erfüllt ist. Bei until wird die Schleife verlassen, sobald die Bedingung erfüllt ist. Das eine ist also die Negation des anderen. Beide Schlüsselworte können zu Anfang oder zu Ende der Schleife stehen, je nachdem, wo die Bedingung abgefragt werden soll. Steht die Bedingung am Ende, wird die Schleife in jedem Fall einmal durchlaufen. In diesem Fall eröffnet das Schlüsselwort do die Schleife.

[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 while-Schleife wird hier die negierte Abfrage geprüft. Im Grunde ist das die gleiche Schleife wie die erste, die mit while erstellt wurde. Die Negierung einer Bedingung ist im Allgemeinen aber schlechter lesbar als die Verwendung von until statt while.

[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 while als falsch interpretiert und führt zum Ende der Schleife.

[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";
}



« foreach | Ablaufsteuerung | Funktionen »
 
 Zum Katalog
Zum Katalog
Wie werde ich UNIX-Guru?
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 UNIX/Linux

PHP 4-Workshop

Einstieg in Python

Perl fürs Web

MySQL 4

GNOME 2.0
 Empfehlung

Einstieg in XML
 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
Info

 MyGalileo
Der Service für registrierte Leser:
Zu MyGalileo
Info



Copyright © Galileo Press 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.
[Galileo Computing]

Galileo Press GmbH, Gartenstraße 24, 53229 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de