Der Perl-Programmierer

Werbung
// PERL LERNEN // PROFESSIONELL ANWENDEN // LÖSUNGEN NUTZEN //
jürgen PLATE
DER
PROGRAMMIERER
PERL
Inhalt
Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Teil I:
Grundlagen ............................................................................ 25
1
Programmierung mit Perl ............................................................. 27
1.1
Erste Schritte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1.1.1
Ein Programm ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
1.1.2
Aufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
1.1.3
Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.2
Sprachkontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
1.3
Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.4
1.5
1.3.1
Datentypen des Perl-Interpreters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
1.3.2
Skalare Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
1.3.3
Vordefinierte Skalare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Operationen und Zuweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
1.4.1
Vergleichsoperatoren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
1.4.2
Logische Operatoren und Bitmaipulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
1.4.3
Operatorenrangfolge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
1.4.4
Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
1.4.5
Vordefinierte Skalarvariablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
1.4.6
Pragmas des Perl-Interpreters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Listen und Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6
Inhalt
1.5.1
Unterschiede und Gemeinsamkeiten von Listen und Arrays . . . . . . . . . . . . . . . . . 49
1.5.2
Array-Funktionen von Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.6
Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
1.7
Kontrollstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
1.8
1.9
1.7.1
Bedingte Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
1.7.2
Schleifenkonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
1.7.3
Sprungbefehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
1.7.4
Verkürzte Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
1.7.5
do-Blöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.7.6
Switch-Struktur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
1.7.7
goto-Anweisung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Unterprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
1.8.1
Parameterübergabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
71
1.8.2
Klammern oder keine Klammern? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
1.8.3
Lebensdauer von Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
1.8.4
Default-Parameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
1.8.5
Vordefinierte Funktionen für Zeichenketten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
1.8.6
Die Sortierfunktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
1.8.7
Vordefinierte Mathematikfunktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
1.8.8
Ausführen von Systemkommandos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
1.8.9
Die eval-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
1.8.10
Funktionen für Datum und Uhrzeit. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
1.8.11
Aufrufkontext ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Besondere Unterprogramme: Blöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
1.10 Rekursion und Iteration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
1.11 Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
1.11.1
Dateien öffnen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1.11.2
Dateien schließen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
1.11.3
Lesender Zugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
1.11.4
Schreibender Zugriff. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
1.11.5
Ein- und Ausgabe mit Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
1.11.6
Dateien zum Lesen und Schreiben öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
1.11.7
Sperren des Dateizugriffes für andere Benutzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
1.11.8
Dateifunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
Inhalt
1.11.9
Dateitestoperatoren und Dateiinformationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
1.11.10 Das DATA-Filehandle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
1.11.11 Besonderheiten der Konsole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
1.11.12 Binäre Daten und Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
1.11.13 Formatierte Ausgabe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
1.12 Verzeichnisse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
1.13 Referenzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131
1.13.1
Referenzen auf Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
1.13.2
Referenzen als Funktionsparameter und -rückgaben . . . . . . . . . . . . . . . . . . . . . . . . . 139
1.13.3
Referenzen auf Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
1.13.4
Referenzen auf Filehandles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
1.13.5
Speicher und Speicherbereinigung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
1.13.6
Autovivikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
1.14 Kommandozeilenparameter. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148
1.14.1
Das Parameter-Array @ARGV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
1.14.2
Kommandozeilen-Schalter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
1.14.3
Die Funktion getopts() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
1.14.4
Die Funktion getopt() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
1.15 Ausblick auf Perl 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
1.15.1
Neuigkeiten bei Perl 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
1.15.2
Neue Sprachkonstrukte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154
1.15.3
Links . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
2
Fehlersuche in Programmen .......................................................... 157
2.1
Fehler suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
2.2
Der Perl-Debugger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
3
Stil und Dokumentation ................................................................ 167
3.1
Stilvorschläge für Perl-Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
3.2
3.1.1
Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
3.1.2
Namen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
3.1.3
Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169
3.1.4
Programmformat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170
Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
3.2.1
Allgemeines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
7
8
Inhalt
3.2.2
POD-Überschriften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
3.2.3
Listeneinträge. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
3.2.4
Texthervorhebungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
3.2.5
Spezielle Ausgabeformate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
3.2.6
Erstellen einer Manual-Seite (Manpage) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
4
Komplexe Datenstrukturen ........................................................... 177
4.1
Anonyme Strukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178
4.2
Mehrdimensionale Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
4.3
Array von Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
4.4
Hash von Arrays . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
4.5
Hash von Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
4.6
Komplexe Datenstrukturen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
4.7
Ausgabe mit Data::Dumper . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
4.8
Strukturen Kopieren und Speichern mit Storable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
4.9
Hash-Slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
5
Externen Code ausführen .............................................................. 207
5.1
Externen Code mittels do() ausführen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
5.2
Externen Code mit require() einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
5.3
Externen Code mit use() einbinden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
6
Reguläre Ausdrücke .................................................................... 213
6.1
Die Basis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
6.2
Operatoren für reguläre Ausdrücke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
6.3
Der Transliterationsoperator tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
6.4
Anker und Zeichenklassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
6.5
Quantifizierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
6.6
Klammern und Rückbezüge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
6.7
Modifizierer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
6.8
Beliebige Begrenzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234
6.9
Perl-Besonderheiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
6.10 Regex-Helfer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
7
Arrays, grep, map etc. .................................................................. 241
Inhalt
7.1
Listen durchsuchen mit grep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
7.2
Listen modifizieren mit map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
7.3
map und sort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
7.4
Arrays manipulieren mit splice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
7.4.1
Array-Elemente entfernen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
7.4.2
Array-Elemente ersetzen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
7.4.3
Array-Elemente hinzufügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
7.5
Array-Slices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
7.6
Das Modul List::Util . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
8
Programmkonfiguration ................................................................ 259
8.1
Konfiguration als Perl-Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 260
8.2
Konfigurationsdatei mit Key-Value-Paaren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
9
Systeminformationen .................................................................. 267
9.1
Systemspezifische Variablen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268
9.2
Ausführen von Systemkommandos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
9.3
Systemfunktionen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
10
9.3.1
Die Funktionen setpwent, getpwent und endpwent . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
9.3.2
Die Funktionen setgrent, getgrent und endgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
9.3.3
Die Funktionen getlogin, getpwuid und getpwnam . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
9.3.4
Die Funktionen getgrgid und getgrnam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
9.3.5
Die Funktionen getpriority und setpriority . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275
9.3.6
Die Funktion getppid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
Prozesse und Signale ................................................................... 277
10.1 Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
10.2 fork(), wait(), waitpid() und kill() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
10.3 Signale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
10.3.1
kill(SIG, Prozess) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 286
10.3.2
Signalhandler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 287
10.3.3
Die Alarm-Funktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
10.4 Prozesskommunikation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
10.4.1
Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293
10.4.2
Named Pipes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 296
9
10
Inhalt
11
10.4.3
Prozesskommunikation mit open() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298
10.4.4
System-V-IPC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
10.4.5
Einen Dämon erzeugen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302
10.4.6
Benutzer- und Gruppen-ID ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 306
Internationalisierung ................................................................... 309
11.1 Die locale-Kategorien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
11.2 Zeichensätze und Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
11.3 locale und Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
11.3.1
Konfiguration ändern und ausgeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
11.3.2
Funktionen für Zeichen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
11.3.3
ISO 3166: Norm zur Länder-Codierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316
11.3.4
ISO 4217: Norm für Währungsabkürzungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317
Teil II:
12
Packages, Module und Objekte ................................................... 319
Packages .................................................................................. 321
12.1 Namenskonflikte mit Packages auflösen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322
12.2 Lexikalische Gültigkeitsbereiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325
12.3 Lokale Gültigkeitsbereiche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
12.4 Globale Variablen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328
12.5 Typeglobs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329
13
Module ..................................................................................... 333
13.1 Perl-Module nutzen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335
13.1.1
Module finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
13.1.2
CPAN-Module installieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
13.2 Eigene Module bauen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 341
13.3 Standardmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
13.4 Pragmas des Perl-Interpreters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
13.5 Modultests automatisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357
13.5.1
Dokumentation testen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
13.5.2
Modultest. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
13.5.3
Test::Simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360
13.5.4
Test::More . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362
Inhalt
13.6 Ein eigenes Modul erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
14
13.6.1
Die Datei Makefile.PL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 369
13.6.2
Die Datei README. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370
13.6.3
Die Datei Changes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
13.6.4
Die Datei MANIFEST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 371
13.6.5
Testprogramme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.6.6
Das Modul selbst . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 372
13.6.7
Das Modul testen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375
13.6.8
Das Modul packen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 376
Objektorientiertes Perl ................................................................. 377
14.1 Grundlagen der OOP. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
14.1.1
Objekte und Klassen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 378
14.1.2
Kapselung (Encapsulation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 380
14.1.3
Vererbung (Inheritance) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 381
14.1.4
Polymorphie (Polymorphism). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 382
14.2 Klassen, Objekte und Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383
14.2.1
Perl-OOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 385
14.2.2
Zugriff auf Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387
14.2.3
Parameter des Konstruktors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 389
14.2.4
Accessors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
14.3 Vererbung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399
Teil III:
15
Perl im Einsatz ..................................................................... 411
Datum und Uhrzeit ...................................................................... 413
15.1 Julianischer Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416
15.2 Osterdatum und bewegliche Feste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422
15.3 Das Modul Date::Calc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424
16
User-Interaktion .........................................................................435
16.1 Erweiterte Kommandozeilenoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
16.2 Einfache Interaktion mit dem Benutzer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440
16.2.1
IO::Interactive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
16.2.2
Term::Readkey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442
11
12
Inhalt
16.2.3
IO::Prompt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
16.3 Textbildschirm mit Curses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
16.3.1
17
Dokumentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450
Textmanipulation ........................................................................ 461
17.1 Programmierwerkzeuge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
17.1.1
Crossreferenz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 462
17.1.2
Hexdump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 464
17.1.3
Dateinamen heilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 466
17.1.4
Passwort-Generator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 468
17.1.5
Doubletten finden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470
17.2 Textersetzung in Dateien. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
17.2.1
Schnipp-Schnapp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 472
17.2.2
Mehrfachersetzungen in einer Datei. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473
17.3 Texte bearbeiten und konvertieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
17.3.1
Buchstabieren leicht gemacht . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 475
17.3.2
Silbentrennung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
17.3.3
Stemmer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 481
17.3.4
Das Soundex-Verfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 486
17.3.5
Rhabarber, Rhabarber . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 487
17.3.6
Lorem ipsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 488
17.4 Verarbeitung von CSV- und Excel-Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490
17.4.1
CSV-Dateien parsen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491
17.4.2
Excel-Dateien lesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 494
17.4.3
Excel-Dateien erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 495
17.5 PDF-Dateien erzeugen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 501
17.6 Makros und Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
18
17.6.1
Ein Makroprozessor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 506
17.6.2
Text-Templates (Schablonen) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 510
Grafik mit Perl ........................................................................... 519
18.1 Grafik-Grundlagen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
18.1.1
Einteilung nach Bildformat/Speicherung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 520
18.1.2
Einteilung nach Farbe und Farbtiefe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 521
18.1.3
Farbensehen beim Menschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Inhalt
18.1.4
Farbmodelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 524
18.1.5
Das RGB-Modell. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
18.1.6
Das CMY-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525
18.1.7
Gammakorrektur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 526
18.1.8
Dithering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 527
18.1.9
Bildkompressionsverfahren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 528
18.1.10 Grafikformate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 529
18.2 Grafiken erzeugen mit dem GD-Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
18.2.1
Erzeugen und Speichern von Images . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 534
18.2.2
Farben zuordnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 535
18.2.3
Grundfunktionen zum Zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 538
18.2.4
Text im Bild ausgeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
18.2.5
Polygone zeichnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 546
18.2.6
Flächen füllen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 552
18.2.7
Spezielle Farbmuster. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 553
18.2.8
Bilder oder Bildausschnitte kopieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 555
18.3 Koordinatensysteme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 560
18.4 Informationen über Bilder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
18.4.1
Bildgröße ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 564
18.4.2
Bilddaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 565
18.4.3
Screenshots anfertigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 566
18.5 Das Chart-Paket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 567
18.6 Das Modul GraphViz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
18.6.1
Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 571
18.6.2
Attribute von new() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 573
18.6.3
Attribute für Knoten und Kanten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575
18.6.4
GraphViz-Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582
18.7 Strichcode mit GD erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
18.8 Bildbearbeitung mit PerlMagick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
19
18.8.1
Die ImageMagick-Programme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 586
18.8.2
PerlMagick = Image::Magick . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593
Die TK-Benutzerschnittstelle ......................................................... 617
19.1 Ereignisgesteuerte Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
13
14
Inhalt
19.2 Einführung in Perl/Tk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 619
19.3 Widget-Optionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
19.4 Geometriemanager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
19.4.1
Der Geometriemanager grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 628
19.4.2
Der Geometriemanager place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 633
19.4.3
Der Geometriemanager pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
19.5 Frame- und Toplevel-Widgets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
19.5.1
Das Widget frame . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 643
19.5.2
Das Toplevel-Widget. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 645
19.6 Die Perl/Tk-Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
19.6.1
Das Button-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
19.6.2
Das Label-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 649
19.6.3
Exkurs: Schriftarten (Fonts) bei X11 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
19.6.4
Das Entry-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 655
19.6.5
Das Messagebox-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 657
19.6.6
Das Dialog-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 660
19.6.7
Das Checkbutton-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662
19.6.8
Das Radiobutton-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 664
19.6.9
Das Listbox-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 666
19.6.10 Die Widgets Scrollbar, Scrolled und Scale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 670
19.6.11 Grafik mit dem Canvas-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 676
19.6.12 Das Text-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 683
19.6.13 Menüs erzeugen mit Menu und Menubutton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 687
19.6.14 Das Notebook-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 692
19.6.15 Ein Fortschrittsbalken-Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 694
19.7 Maus und Tasten an Aktionen/Widgets binden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 698
20
MySQL-Datenbanken ....................................................................709
20.1 Einführung in Datenbanken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
20.1.1
Datenbankentwurf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714
20.1.2
Elementare Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
20.1.3
Relationale Operationen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
20.2 Die Sprache SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
20.3 MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
Inhalt
20.3.1
Installation und Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
20.3.2
MySQL-Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 733
20.3.3
Datenbankabfrage mit SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
20.3.4
Joins – Abfragen mit SELECT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
20.3.5
Zeichenkettenoperationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
20.3.6
Datums- und Zeitfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
20.3.7
Bedingte Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
20.3.8
Tabellen importieren oder clonen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 756
20.3.9
Datensätze ändern oder löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
20.3.10 Felder einer Tabelle ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
20.3.11 Datenbank sichern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
20.4 Die Perl-DBI-Schnittstelle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763
20.4.1
Verbindung zur Datenbank öffnen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 764
20.4.2
Allgemeine Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
20.4.3
Übergabe von User, Passwort und Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 768
20.4.4
Metadaten zur Datenbank ermitteln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769
20.4.5
MySQL-Tabellen anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
20.4.6
Zugriff auf die Datensätze . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
20.4.7
MySQL-Spezialfunktionen und Fehlerbehandlung . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
20.4.8
Bilder abspeichern und anzeigen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
20.4.9
Anwendungsbeispiel: IP-Adresse dem Land zuordnen . . . . . . . . . . . . . . . . . . . . . . . 785
20.4.10 SQL-Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
21
Netzwerkprogrammierung ............................................................. 793
21.1 Socketprogrammierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
21.1.1
Die Socket-Netzwerkschnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
21.1.2
Die Socket-Funktionen des Betriebssystems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
21.1.3
Der erste Perl-Server und -Client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
21.2 Netzwerkfunktionen in Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
21.2.1
IP-Adressen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
21.2.2
Informationsfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
21.3 Die Socket-Schnittstelle IO::Socket::INET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
21.3.1
Der Konstruktor new . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
21.3.2
Aktive Methoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
15
16
Inhalt
21.3.3
Informationsmethoden . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
21.3.4
Gepufferte Ein- und Ausgabe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
21.4 Namensauflösung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
21.5 Server und Client in Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
21.6 Forking Server in Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
21.7 Server für bestimmte Dienste. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
21.7.1
Sprüche-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
21.7.2
Keks-Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
21.7.3
Server für HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 826
21.7.4
Preforking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 838
21.7.5
Serverdienste über inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
21.7.6
Protokollierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
21.7.7
Timeouts abfangen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
21.8 Perl-Clients für Standarddienste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
21.8.1
Client für Binärdaten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 843
21.8.2
Webclients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 845
21.8.3
FTP-Clients. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 859
21.9 Portscanner . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 862
21.10 Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
21.11 Rechner im Netz suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 866
21.12 Spezielle Netzwerkanwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
21.12.1 Aktienkurse auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 869
21.12.2 Comics herunterladen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
21.12.3 Wake-On-LAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
21.12.4 Ein Protokoll entwerfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 879
21.12.5 Webcams auslesen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
21.12.6 Steuern über das Netz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
22
E-Mail ...................................................................................... 901
22.1 E-Mail-Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 902
22.1.1
Ein Blick auf den Briefkopf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
22.1.2
Mailing-Listen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 904
22.1.3
Was ist MIME? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 905
22.1.4
POP – Post Office Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
Inhalt
22.1.5
IMAP – Internet Message Access Protocol. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 910
22.1.6
Der Mail Transport Agent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
22.2 E-Mail versenden mit Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
22.2.1
Mailversand mit Sendmail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 914
22.2.2
Mailversand mit Netzwerkfunktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 915
22.2.3
Mailversand mit Net::SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 917
22.2.4
Ein Mini-MTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 920
22.3 E-Mail mit Attachment versenden. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 921
22.4 MIME-Mails verarbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
22.4.1
Das Modul MIME::Parser. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 927
22.4.2
Der Mail-Analysator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 935
22.4.3
Die Dateien aliases und .forward . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
22.5 E-Mail vom Mailserver holen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
23
22.5.1
E-Mail per POP3 holen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
22.5.2
E-Mail per IMAP holen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 944
CGI und HTML ............................................................................ 951
23.1 Das Hypertext Transfer Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
23.1.1
Struktur der HTTP-Botschaften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954
23.1.2
Antwortcodes eines WWW-Servers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 956
23.2 Common Gateway Interface (CGI) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 957
23.2.1
Daten empfangen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 959
23.2.2
Dem Browser eine Antwort geben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 961
23.2.3
Sicherheit und CGI-Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
23.2.4
Wenn das CGI-Programm nicht läuft . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 968
23.2.5
HTML-Formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 969
23.2.6
CGI-Programme und die Webseite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976
23.3 CGI-Programmierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979
23.3.1
Ablauf eines CGI-Programms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 979
23.3.2
Decodierung der übergebenen Daten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 980
23.3.3
Fehlerbehandlung im Browser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 991
23.3.4
Ein Blick auf den HTTP-Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 993
23.3.5
Formulare generieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
23.3.6
Binärinformation zurückgeben. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1001
17
18
Inhalt
23.3.7
Einige einfache Anwendungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1007
23.4 Das CGI-Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1025
23.4.1
Erzeugung eines neuen CGI-Query-Objekts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1029
23.4.2
Formularparameter bearbeiten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1030
23.4.3
CGI-Modul und HTTP-Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032
23.4.4
HTML-Header und -Footer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1035
23.4.5
Erzeugung von Formularen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1036
23.4.6
Standard-HTML-Elemente erzeugen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1042
23.4.7
Die funktionsorientierte Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1043
23.4.8
Debugging-Tips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1045
23.5 Datei-Upload per Formular . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1047
23.6 Session-Tracking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1050
23.6.1
Zustandsspeicherung über PATH_INFO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052
23.6.2
Zustandsspeicherung per URL-Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1053
23.6.3
Zustandsspeicherung über Hidden-Felder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1054
23.6.4
Zustandsspeicherung über Cookies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1055
23.7 Datenbankzugriffe in CGI-Programmen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1067
23.8 Captchas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1070
23.9 Fehler im Webserver-Log suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1077
23.10 Webseiten lokal zum Browser schicken . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079
24
Suchen und Finden ...................................................................... 1081
24.1 Eine kleine lokale Suchmaschine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1084
24.2 Dateien indizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
24.2.1
Konfiguration des Indexers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1091
24.2.2
Texte indizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1094
24.2.3
Ein Volltextindex auf Dateibasis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101
24.2.4
Ein Volltextindex mit MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104
24.3 Mit Swish-E Webseiten indizieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1110
24.4 Links überprüfen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1119
25
Numerik und Statistik .................................................................. 1123
25.1 Mathematikmodule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
25.1.1
Große Ganzzahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
25.1.2
Große Gleitkommazahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1127
Inhalt
25.1.3
Komplexe Zahlen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1129
25.1.4
Trigonometrische Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131
25.2 Deskriptive Statistik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136
25.2.1
Tabellarische und grafische Darstellung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1136
25.2.2
Mittelwert, Varianz, Standardabweichung, Standardfehler. . . . . . . . . . . . . . . . . . . 1137
25.2.3
Minimum, Maximum, Median, Modalwert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139
25.2.4
Lineare Regression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141
25.3 Geometrie: Polygonumfang und -Fläche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1143
25.4 Nullstellen von Gleichungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1145
25.5 Numerische Integration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1150
25.6 Permutationen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1152
26
Perl und die Hardware .................................................................. 1153
26.1 You must be root . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1154
26.2 Die parallele Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1155
26.2.1
Parallele Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1156
26.2.2
Programmierung der parallelen Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159
26.3 Die serielle Schnittstelle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163
26.3.1
Serielle Grundlagen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163
26.3.2
Programmierung mit Perl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1167
26.3.3
Steuer- und Statusleitungen, Meldungen, Einstellungen . . . . . . . . . . . . . . . . . . . . . 1174
26.3.4
Serielle Ein- und Ausgabe, Timeouts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1181
26.3.5
Betrieb mit Modems etc. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1188
26.3.6
Messwerterfassung über die serielle Schnittstelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194
26.4 Die USB-Schnittstelle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1202
26.4.1
Informationen über den USB einholen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203
26.4.2
USB über die libusb ansteuern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1210
Literatur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1217
Index .............................................................................................. 1219
19
1
Programmierung mit Perl
Dieses Kapitel behandelt die folgenden Themen:
Perl-Interpreter
Sprachkonzept
Datentypen
Sprachstrukturen
If you remove stricture from a large Perl program
currently, you are just installing delayed bugs,
whereas with this feature, you are installing
an instant bug that is easily fixed. Whoopee.
Larry Wall
1.1 Erste Schritte
Ursprünglich konzipiert, um große Mengen Text schnell zu durchsuchen und zu analysieren, wird Perl mittlerweile für nahezu alle denkbaren Zwecke eingesetzt. Daher kommt
28
1 Programmierung mit Perl
auch der Name „Practical Extraction and Report Language“. Die Sprache wurde von einem einzelnen Entwickler entworfen: Larry Wall. Perl ist Freeware und auf vielen Rechnerplattformen verfügbar, unter anderem Linux, DOS/Windows und Mac OS. Perl ist
eine interpretierte Sprache,
für Erschließung, Aufbereitung und Neuformatierung beliebiger Texte,
kann C-Programme sowie sed-, awk- und Shell-Skripts ersetzen,
überwindet alle Beschränkungen dieser Sprachen
und trägt den Spitznamen Pathologically Eclectic Rubbish Lister.
Perl wurde von Beginn an als Mischung zwischen Shell- und C-Programmierung entwickelt. Es gibt daher zahlreiche Anleihen aus anderen Sprachen sowie verschiedene
Perl-Spezialitäten. Dabei ist Perl im Gegensatz zu Shell-Programms oder C-Programmen
jedoch äußerst portabel. Perl ist für den praktischen Einsatz gedacht und richtet seinen
Fokus auf schnelle und einfache Programmierbarkeit, Vollständigkeit und Anpassbarkeit.
Diese Philosophie drückt sich in den folgenden Kernsätzen aus, die meist von Larry Wall
selbst stammen.
Eigentlich ist Perl eine einfache Sprache – man braucht nicht viele reservierte Worte
(Elemente der Sprachsyntax) zu kennen, um ein Perl-Programm zu schreiben, und man
kann es ausführen wie ein Shell-Programm. Die von Perl benutzten Typen und Strukturen
sind einfach zu verstehen und zu benutzen. Es gibt keine künstlichen Beschränkungen
für die zu verarbeitenden Daten; Strings und Arrays können beliebig wachsen (solange
der Speicher reicht) und sie sind darauf ausgelegt, trotzdem gut zu skalieren.
Das bekannteste und grundlegendste Perl-Motto ist „There is more than one way to
do it“. Zu deutsch: „Es gibt mehr als einen Weg, etwas zu tun“. Perl macht im Gegensatz zu anderen Sprachen weniger Vorgaben und bietet für jedes Problem mehrere
Formulierungs- und Lösungsmöglichkeiten an – so existieren zahlreiche Befehle mit einem sich überschneidenden Funktionsumfang (z. B. map oder for). Verschiedene Formulierungen dienen dem gleichen Sachverhalt. Einige Befehle wie der Diamant-Operator
(<>) bieten verkürzte Schreibweisen für bereits vorhandene Funktionalität. Diese Vielfalt
wird auch bei CPAN sichtbar, wo oft mehrere Module mit sehr ähnlichem Zweck verfügbar sind. So stellt Perl es dem Benutzer frei, strukturierte, objektorientierte, funktionale
oder imperative Sprachmerkmale einzusetzen. Larry Wall hat dazu noch bemerkt, dass
alle Lösungswege richtig sind. Perl ist somit auch eine Sprache, die der Bewusstseinsverengung der Programmierer entgegenwirkt.
Der zweite wichtige Merksatz ist: „Perl makes easy jobs easy and hard jobs possible“ – Bei
Perl bleiben die einfachen Aufgaben einfach zu lösen, die Lösung schwieriger Aufgaben
wird trotzdem ermöglicht. Das bedeutet für Perl beispielsweise, keine vorbereitenden Anweisungsfolgen wie das Definieren von Variablen oder das Schreiben einer Objektklasse
zu verlangen (wer will, darf es aber trotzdem machen). Auch versucht Perl, als Sprache
vollständig zu sein, und für jedes Problem mindestens die Möglichkeit einer Lösung anzubieten (auch wenn vielleicht in einem speziellen Fall eine andere Sprache geeigneter
wäre). Damit verbunden ist aber schließlich auch das Ziel, die beiden erstgenanntenen
Ziele nicht kollidieren zu lassen.
In Perl werden Sie auch Befehle kennenlernen, die unterschiedliche Bedeutungen besitzen, je nachdem in welchem Kontext sie verwendet werden. Datenstrukturen wie das
1.1 Erste Schritte
Array sind ebenfalls kontextsensitiv. Wird ein Array einem anderen Array zugewiesen,
so wird dessen Inhalt übergeben; ist der Empfänger ein einzelner Wert (Skalar), erhält
dieser die Länge des Arrays. Aufgrund seiner offenen Struktur kann Perl sehr leicht erweitert werden. Man kann Perl in andere Sprachen und andere Sprachen in Perl einbetten
und objektorientierte Bibliotheken benutzen. Durch den Mechanismus zum Modulimport
können externe Definitionen so genutzt werden, als wären sie in Perl eingebaut. So gibt
es zahllose Erweiterungen für Perl, darunter Datenbankanbindungen, Anbindungen an
das grafische Toolkit Tk, mathematische Erweiterungen und vieles mehr.
Der Perl-Interpreter selbst ist ein in C geschriebenes Programm, das auf annähernd jedem
Betriebssystem compilierbar ist. Der Quellcode umfasst mehr als 50 Megabyte. Beim Start
eines Perl-Programms wird dieses vom Perl-Interpreter eingelesen, in einen kompakten
Zwischencode (Bytecode) umgewandelt, der dann ausgeführt wird. Daher ist die Anwesenheit des Perl-Interpreters zum Ausführen der Programme/Programme immer notwendig. Die Vorab-Compilierung bedeutet aber auch, dass anders als bei reinen Interpretern
ein Programm mit Syntaxfehlern nicht startet. Compiler und Interpreter sind effizient,
und der typische Übersetzungszyklus dauert meist nur Sekunden. Zusammen mit den
vielen Möglichkeiten von Perl, auf Fehler „weich“ zu reagieren, erlaubt diese kurze Zykluszeit Rapid-Prototyping in Perl.
Ich werde Ihnen in diesem Kapitel eine Einführung in Perl geben und beginne mit den
prozeduralen Aspekten der Sprache. Wenn Sie Spaß an Perl gefunden haben, finden Sie
sicher auch Spaß an den objektorientierten Aspekten. Obwohl Perl in vieler Hinsicht sehr
einfach gehalten wurde, so ist es auch eine sehr reichhaltige Sprache, bei der es sehr viel
zu lernen gibt.
Am bekanntesten ist die Verwendung als Programmiersprache für CGI-Programme im
WWW sowie im Bereich der Linux-Systemadministration. Aber auch für viele andere
Aufgaben hat sich Perl bewährt:
Datenbankmanipulation
Text- und Dokumentenverarbeitung
Datenextraktion und -reduktion
Netzwerk-Administration
Filesystem-Manipulation
sicherheitsorientiertes Programmieren
WWW-basiertes Informationsmanagement
objektorientierte und funktionale Programmierung
und vieles mehr
Perl-Dateien haben in der Regel die Endung .pl oder .cgi. Die Ausführung wird entweder durch expliziten Aufruf des Perl-Interpreters gestartet (z. B. perl tuwas.pl) oder bei
Linux durch eine spezielle Kommentarzeile zu Beginn der Quelldatei.
Das unvermeidliche erste Programm einer jeden Programmiersprache ist auch das „Hello
World“-Programm:
#!/usr/bin/perl
# Das unvermeidliche erste Programm
29
30
1 Programmierung mit Perl
print "Hello world.\n";
# Ausgabe eines Textes
Fast jedes Perl-Programm beginnt unter Linux mit der Zeile
#!/usr/bin/perl
Obwohl die Zeile von System zu System unterschiedlich aussehen kann, sagt sie dem
Computer, was er bei der Ausführung zu tun hat. In diesem Fall soll er das Programm
durch den Perl-Interpreter schicken, dessen Pfad angegeben wurde. In den Beispielen des
Buchs lasse ich diese Zeile für gewöhnlich weg, um Platz zu sparen.
Zeilen, die mit einem # beginnen sind Kommentarzeilen, die keinen Programmcode
enthalten (insofern ist die mit „#!“ beginnende Zeile eine ganz spezielle Kommentarzeile, deren Wurzeln im UNIX-Betriebssystem verankert sind). Alles Übrige sind PerlAnweisungen, welche mit einem Strichpunkt beendet werden müssen – so wie die letzte
Zeile oben.
Die print-Funktion gibt Information aus. Im obigen Fall gibt sie die Zeichenkette Hello
world. und anschließend einen Zeilenwechsel aus.
1.1.1
Ein Programm ausführen
Schreiben Sie das Beispielprogramm mit einem Text-Editor und speichern Sie es ab.
Unter Linux oder Mac OS kann es ausführbar gemacht werden, beispielsweise mit dem
Kommando
chmod u+x programmname
Um ein Perl-Programm zu starten, können Sie bei Linux eine der folgenden Möglichkeiten wählen:
perl programmname
./programmname
Bei Windows in der Eingabeaufforderung haben Sie nur die erste Möglichkeit (als Alternative bliebe noch einer der Perl-zu-EXE-Compiler). Vielleicht haben Sie Glück, und das
Programm wird ausgeführt.
Bei der Ausführung eines Perl-Programms (Perl-Programm) wird der Text zuerst compiliert (interpretiert). Dieser Schritt erzeugt auch die Fehlermeldungen. Anschließend wird
es ausgeführt. Die eigentliche Laufzeit ist vergleichbar mit einem C-Programm. Je nach
Länge des Programms muss mit einer gewissen Compilierzeit gerechnet werden.
Möglicherweise erscheinen aber Fehlermeldungen oder es geschieht überhaupt nichts.
Man kann beim Aufruf den Perl-Interpreter veranlassen, Warnungen und weitere hilfreiche Meldungen auszugeben, bevor das Programm ausgeführt wird.
1.1 Erste Schritte
1.1.2
Aufruf
Beim Aufruf des Perl-Interpreters (Linux-Version) lassen sich einige Optionen angeben
(Aufrufbeispiel: perl -c test.pl oder perl -cwT test.pl). Weitere Optionen
sind:
-v gibt die Version aus.
-c compiliert das Programm ohne Ausführung (Syntaxcheck).
-e Zeile Für einzeilige Programme, die gleich in der Kommandozeile übergeben werden.
-0 Wert Die Null (kein Buchstabe) erwartet als unmittelbar folgenden Parameter den
Wert des Datensatztrenners. Der Datensatztrenner teilt Perl mit, was als Datensatz zu
interpretieren ist; im Normalfall ist dies der Zeilenumbruch.
-d aktiviert den Debugger. [-D NUM setzt die Debugging-Flags.
-i Suffix Mit dieser Option lässt sich angeben, ob und unter welchen Namen Sicherheitskopien von einer Datei angelegt werden.
-n schließt den ganzen Programmtext in einer while-Schleife ein, um ihn auf alle
Zeilen eines Quelltextes anzuwenden.
-p geht noch einen Schritt weiter als [-n und druckt automatisch den Wert der Standardvariablen aus, sodass auch kein [print-Befehl mehr nötig ist.
-s interpretiert -xxx auf der Kommandozeile als Option (Schalter) und setzt die korrespondierende Variable $xxx im Programm.
-T erzwingt Taint-Checking.
-u erzeugt einen Coredump nach der Übersetzung. Siehe auch die Manualpage von
undump.
-w gibt Warnungen aus. Entspricht dem Pragma use warnings.
-M Modul lädt das angegebene Modul (entspricht dem „use“ im Programm).
-P lässt das Programm vor der Ausführung durch den Perl-Interpreter erst durch den
C-Präprozessor laufen.
-S Das Programm braucht nur als Dateiname ohne Pfad angegeben zu werden. Wenn
es in einem der Verzeichnisse liegt, die in der PATH-Variablen des Betriebssystems
genannt sind, findet Perl das Programm auch ohne Pfadangabe.
31
Index
Symbole
.forward . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
A
accept (Socket) . . . . . . . . . . . . . . . . . . . . 801
access.log . . . . . . . . . . . . . . . . . . . . . . . . 1077
Accessors . . . . . . . . . . . . . . . . . . . . . . . . . 394
Active-Perl . . . . . . . . . . . . . . . . . . . . . . . . 340
after . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Aktienkurse . . . . . . . . . . . . . . . . . . . . . . . 869
Alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
alarm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
aliases . . . . . . . . . . . . . . . . . . . . . . . . . . . . 939
Aliasnamen . . . . . . . . . . . . . . . . . . . . . . . 330
ALTER TABLE . . . . . . . . . . . . . . . . 757, 760
Analoguhr . . . . . . . . . . . . . . . . . . . . . . . 1004
animiertes GIF . . . . . . . . . . . . . . . . . . . . . 603
Anker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Anomalien . . . . . . . . . . . . . . . . . . . . . . . . 719
Anonyme Datenstrukturen . . . . . . . . . 177
anonyme Strukturen . . . . . . . . . . . . . . . 178
ANSI-SQL . . . . . . . . . . . . . . . . . . . . . . . . . 725
Antwort an Browser . . . . . . . . . . . . . . . 961
Anweisungsstrukturen . . . . . . . . . . . . . . 60
Apache . . . . . . . . . . . . . . . . . . . . . . . 952, 953
ARGV . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
Array . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 49
Array of Array . . . . . . . . . . . . . . . . . . . . 182
Array vergleichen . . . . . . . . . . . . . . . . . 141
Array von Hashes . . . . . . . . . . . . . . . . . 186
Array-Elemente entfernen . . . . . . . . . . 252
Array-Elemente ersetzen . . . . . . . . . . . 253
Array-Elemente hinzufügen . . . . . . . . 253
Array-Funktionen . . . . . . . . . . . . . . . . . . 53
Array-Segment . . . . . . . . . . . . . . . . . . . . 254
Array-Slices . . . . . . . . . . . . . . . . . . . . . . . 254
Arrays manipulieren . . . . . . . . . . . . . . . 252
Arrays, mehrdimensional . . . . . . . . . . 182
ASCII . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Attachment . . . . . . . . . . . . . . . . . . . . . . . 921
Attribut . . . . . . . . . . . . . . . . . . . . . . . 379, 711
attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Attributparameter . . . . . . . . . . . . . . . . 1042
Aufruf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Aufrufkontext . . . . . . . . . . . . . . . . . . . . . . 94
Aufzählungstypen . . . . . . . . . . . . . . . . . 737
Ausreden-Server . . . . . . . . . . . . . . . . . . . 990
Ausschlussliste . . . . . . . . . . . . . . . . . . . 1094
Auswahlfelder . . . . . . . . . . . . . . . . . . . . 1039
AUTH CRAM-MD5 . . . . . . . . . . . . . . . . . 913
Authentisierung . . . . . . . . . . . . . . . 912, 919
AUTO_INCREMENT . . . . . . . . . . . . . . . . 738
AutoCommit . . . . . . . . . . . . . . . . . . . . . . 766
AUTOLOAD . . . . . . . . . . . . . . . . . . . . . . . 397
autouse . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Autovivikation . . . . . . . . . . . . . . . . . . . . 148
1220
Index
AVR-NET-IO . . . . . . . . . . . . . . . . . . . . . . 890
Axis 207 . . . . . . . . . . . . . . . . . . . . . . . . . . 887
B
Backticks . . . . . . . . . . . . . . . . . . . . . . . . . 269
Barcode . . . . . . . . . . . . . . . . . . . . . . . . . . . 583
Barcode, 2-aus-5 . . . . . . . . . . . . . . . . . . 584
Barcode, 2D . . . . . . . . . . . . . . . . . . . . . . . 584
Barcode, EAN . . . . . . . . . . . . . . . . . . . . . 583
base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Base64 . . . . . . . . . . . . . . . . . . . . . . . 906, 912
Bcc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
Bedingte Anweisungen . . . . . . . . . . . . . . 61
Bedingungen . . . . . . . . . . . . . . . . . . . . . . 756
BEGIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Benutzerschnittstelle, grafisch . . . . . . 617
Berners-Lee . . . . . . . . . . . . . . . . . . . . . . . 951
Betriebssystemabhängigkeit . . . . . . . . 267
bewegliche Feste . . . . . . . . . . . . . . 422, 423
BigFloat . . . . . . . . . . . . . . . . . . . . . . . . . . 1127
BigInt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1124
Bilddaten (Foto) . . . . . . . . . . . . . . . . . . . 565
Bilddaten, PerlMagick . . . . . . . . . . . . . . 595
Bilder aufhellen . . . . . . . . . . . . . . . . . . . 604
Bilder konvertieren . . . . . . . . . . . . . . . . 594
Bilder morphen . . . . . . . . . . . . . . . . . . . . 603
Bilder speichern (DBI) . . . . . . . . . . . . . . 783
Bilderkatalog . . . . . . . . . . . . . . . . . . . . . 1012
Bildgröße ermitteln . . . . . . . . . . . . . . . . 564
Bildkompressionsverfahren . . . . . . . . . 528
Bildkoordinaten . . . . . . . . . . . . . . . . . . . 560
Binärbaum . . . . . . . . . . . . . . . . . . . . . . . . 196
Binärdateien . . . . . . . . . . . . . . . . . . . . . . . 118
Binärdaten . . . . . . . . . . . . . . . . . . . . . . . . 736
bind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
bind (Socket) . . . . . . . . . . . . . . . . . . . . . . 800
binmode . . . . . . . . . . . . . . . . . . . . . . . . . 1002
Bisektion . . . . . . . . . . . . . . . . . . . . . . . . . 1145
Bitmap, BMP . . . . . . . . . . . . . . . . . . . . . . 529
Bitoperationen . . . . . . . . . . . . . . . . . . . . . . 39
Blättern . . . . . . . . . . . . . . . . . . . . . . . . . . 1114
Blöcke . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
BLOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
Blob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
Block . . . . . . . . . . . . . . . . . . . . . . . . . . . 60, 70
block . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Briefkopf . . . . . . . . . . . . . . . . . . . . . . . . . . 903
Buchse, Parallelschnittstelle . . . . . . . 1157
Button-Widget . . . . . . . . . . . . . . . . . . . . 647
bytes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
C
C-Subnetz . . . . . . . . . . . . . . . . . . . . . . . . . 864
Call-by-Reference . . . . . . . . . . . . . . . . . . 72
Call-by-Value . . . . . . . . . . . . . . . . . . . . . . 72
Callback . . . . . . . . . . . . . . . . . . . . . . 618, 621
caller . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
can() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407
Canvas-Widget . . . . . . . . . . . . . . . 676, 702
Captchas . . . . . . . . . . . . . . . . . . . . . . . . . 1070
Carp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
carp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Cc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
CGI . . . . . . . . . . . . . . . . . . . . . . 846, 951, 957
CGI debuggen . . . . . . . . . . . . . . . 969, 1045
CGI, Bild ausgeben . . . . . . . . . . . . . . . 1002
CGI, Binärinformation . . . . . . . . . . . . 1001
CGI, Datenbank . . . . . . . . . . . . . . . . . . 1067
CGI, Formular-Parameter . . . . . . . . . 1030
CGI, funktionsorientiert . . . . . . . . . . . 1043
CGI, PDF ausgeben . . . . . . . . . . . . . . . 1002
CGI, Schreibrecht . . . . . . . . . . . . . . . . . 1025
CGI-Daten empfangen . . . . . . . . . . . . . 959
CGI-Dump . . . . . . . . . . . . . . . . . . . . . . . 1045
CGI-Fehlersuche . . . . . . . . . . . . . . . . . . . 968
CGI-Modul . . . . . . . . . . . . . . . . . . . . . . . 1025
CGI-Modul, Warnungen . . . . . . . . . . . 1028
CGI-Programmablauf . . . . . . . . . . . . . . 979
CGI-Programmierung . . . . . . . . . . . . . . 979
CGI-Query-Objekt . . . . . . . . . . . . . . . . 1029
CGI-Script . . . . . . . . . . . . . . . . . . . . . . . . 957
CGI-Scripts beschränken . . . . . . . . . . 1046
CGI-Sicherheit . . . . . . . . . . . . . . . . . . . . .963
CGI.pm . . . . . . . . . . . . . . . . . . . . . . . . . . 1025
Challenge-Response . . . . . . . . . . . . . . . 880
Changes-Datei . . . . . . . . . . . . . . . . . . . . . 371
CHAR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Characterfunktionen . . . . . . . . . . . . . . . 315
Chart-Module . . . . . . . . . . . . . . . . . . . . . 567
Chart-Paket . . . . . . . . . . . . . . . . . . . . . . . 567
CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Index
Checkbox . . . . . . . . . . . . . . . . . . . . . . . . 1039
Checkbox-Tag . . . . . . . . . . . . . . . . . . . . . 972
checkbox_group . . . . . . . . . . . . . . . . . . 1039
Checkbutton-Widget . . . . . . . . . . . . . . . 662
close . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
close (Socket) . . . . . . . . . . . . . . . . . . . . . . 802
Closure . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
CMY-Modell . . . . . . . . . . . . . . . . . . . . . . 525
Codd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Code ausführen . . . . . . . . . . . . . . . . . . . . . 91
code2country . . . . . . . . . . . . . . . . . . . . . . 316
code2currency . . . . . . . . . . . . . . . . . . . . . 317
Codierung . . . . . . . . . . . . . . . . . . . . . . . . . 311
Comic-Download . . . . . . . . . . . . . . . . . . 872
Comics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
Commit . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
Complex . . . . . . . . . . . . . . . . . . . . . . . . . 1129
confess . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
configure . . . . . . . . . . . . . . . . 626, 627, 635
connect (Socket) . . . . . . . . . . . . . . . . . . . 801
Connect-Logging . . . . . . . . . . . . . . . . . . 840
constant . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Content-Type . . . . . . . . . . . . . . . . . 906, 962
continue . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Cookie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 995
Cookies . . . . . . . . . . . 858, 954, 1033, 1055
COUNT . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
country2code . . . . . . . . . . . . . . . . . . . . . . 316
CPAN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
CPAN-Kategorien . . . . . . . . . . . . . . . . . . 341
CPAN-Module . . . . . . . . . . . . . . . . . . . . . 339
CPAN-Shell . . . . . . . . . . . . . . . . . . . . . . . 340
croak . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
CSV-Datei . . . . . . . . . . . . . . . . . . . . . . . . . 788
currency2code . . . . . . . . . . . . . . . . . . . . . 317
Cursorformen . . . . . . . . . . . . . . . . . . . . . 625
D
Daemon . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
DATA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
Data::Dumper . . . . . . . . . . . . . . . . . . . . . 199
Datagram . . . . . . . . . . . . . . . . . . . . . . . . . 796
DATE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Date::Calc . . . . . . . . . . . . . . . . . . . . . . . . . 424
Date::Format . . . . . . . . . . . . . . . . . . . . . . 433
Date::Pcalc . . . . . . . . . . . . . . . . . . . . . . . . 433
Datei-Handle . . . . . . . . . . . . . . . . . . . . . . 102
Datei-Upload . . . . . . . . . . . . . . . 1046, 1047
Dateibaum durchsuchen . . . . . . . . . . 1084
Dateien . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
Dateien indizieren . . . . . . . . . . . . . . . . 1089
Dateien lesen . . . . . . . . . . . . . . . . . . . . . . 106
Dateien schreiben . . . . . . . . . . . . . . . . . . 108
Dateien sperren . . . . . . . . . . . . . . . . . . . . 113
Dateifehler . . . . . . . . . . . . . . . . . . . . . . . . 104
Dateifunktionen . . . . . . . . . . . . . . . . . . . 113
Dateiindex . . . . . . . . . . . . . . . . . . . . . . . 1089
Dateiindizierung . . . . . . . . . . . . . . . . . . 1081
Dateiinformationen . . . . . . . . . . . . . . . . 115
Dateikonverter . . . . . . . . . . . . . . . . . . . 1091
Dateipfade . . . . . . . . . . . . . . . . . . . . . . . . 104
Dateitest . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Datenbank sichern . . . . . . . . . . . . . . . . . 762
Datenbank, Fachbegriffe . . . . . . . . . . . 714
Datenbank, relational . . . . . . . . . . . . . . 711
Datenbank, Server . . . . . . . . . . . . . . . . . 729
Datenbank, Sicht . . . . . . . . . . . . . . . . . . 710
Datenbank-Connect . . . . . . . . . . . . . . . 764
Datenbankabfrage . . . . . . . . . . . . . . . . . 739
Datenbankanbindung . . . . . . . . . . . . . . 709
Datenbankentwurf . . . . . . . . . . . . . . . . . 714
Datenbankschema . . . . . . . . . . . . . . . . . . 711
Datenbanksystem . . . . . . . . . . . . . . . . . . 710
Datenbanktabelle . . . . . . . . . . . . . . . . . . 711
Datenbankzugriff . . . . . . . . . . . . 772, 1067
Datenintegrität . . . . . . . . . . . . . . . . . . . . 710
Datenport (parallel) . . . . . . . . . . . . . . . 1157
Datenrate . . . . . . . . . . . . . . . . . . . . . . . . 1163
Datensätze ändern . . . . . . . . . . . . . . . . . 759
Datensätze löschen . . . . . . . . . . . . . . . . 759
Datenstrukturen klonen . . . . . . . . . . . . 202
Datenstrukturen kopieren . . . . . . . . . . 202
Datenstrukturen speichern . . . . . . . . . 202
Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . 33
DATETIME . . . . . . . . . . . . . . . . . . . . . . . . 735
Datum . . . . . . . . . . . . . . . . . . . . . . . . . 92, 413
Datum und Uhrzeit . . . . . . . . . . . . . . . . 413
Datumsdifferenz . . . . . . . . . . . . . . 425, 430
Datumsfunktionen . . . . . . . . . . . . . . . . . 755
DBD-Treiber . . . . . . . . . . . . . . . . . . . . . . . 763
DBD-Treiber anzeigen . . . . . . . . . . . . . 763
DBI Disconnect . . . . . . . . . . . . . . . . . . . . 767
1221
1222
Index
DBI Tracing . . . . . . . . . . . . . . . . . . . . . . . 767
DBI-Fehlermeldungen . . . . . . . . . . . . . . 765
DBI-Notationen . . . . . . . . . . . . . . . . . . . 764
DBI-Schnittstelle . . . . . . . . . . . . . . . . . . 763
DBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 710
Debugger . . . . . . . . . . . . . . . . . . . . . . . . . 160
DECIMAL . . . . . . . . . . . . . . . . . . . . . . . . . 734
Default-Parameter . . . . . . . . . . . . . . . . . . 80
Default-Werte . . . . . . . . . . . . . . . . . . . . . 737
Defaultbutton . . . . . . . . . . . . . . . . . . . . 1041
defaults . . . . . . . . . . . . . . . . . . . . . . . . . . 1041
delete . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Denial-of-Service-Attacke . . . . . . . . 1046
destroy . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Device::ParallelPort . . . . . . . . . . . . . . . 1159
Device::SerialPort . . . . . . . . . . . . . . . . . 1168
diagnostics . . . . . . . . . . . . . . . . . . . . . . . . . 47
Dialog-Widget . . . . . . . . . . . . . . . . . . . . . 660
die . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Dienste . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
DISTINCT . . . . . . . . . . . . . . . . . . . . . . . . . 745
Dithering . . . . . . . . . . . . . . . . . . . . . . . . . 527
do . . . . . . . . . . . . . . . . . . . . . . . . . . . 207, 208
do-Anweisung . . . . . . . . . . . . . . . . . . . . . . 63
do-Block . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Dokumentation . . . . . . . . . . . . . . . 167, 172
Dokumentation testen . . . . . . . . . . . . . 359
Domainname . . . . . . . . . . . . . . . . . . . . . . 815
DOUBLE . . . . . . . . . . . . . . . . . . . . . . . . . . 734
Doubletten entfernen . . . . . . . . . . . . . . 255
Dritte Normalform . . . . . . . . . . . . . . . . . 717
Druckerport, Programmierung . . . . . 1159
Druckerschnittstelle . . . . . . . . . . . . . . . 1155
Druckerschnittstelle, Ablauf . . . . . . . 1156
dumpit() . . . . . . . . . . . . . . . . . . . . . . . . . . 180
DVD-Index . . . . . . . . . . . . . . . . . . . . . . . 1101
E
E-Mail . . . . . . . . . . . . . . . . . . . . . . . 901, 902
E-Mail holen . . . . . . . . . . . . . . . . . . . . . . 941
E-Mail-Attachment . . . . . . . . . . . . . . . . 921
E-Mail-Versand . . . . . . . . . . . . . . . . . . . . 914
Echo-Port . . . . . . . . . . . . . . . . . . . . . . . . . 798
Echtfarbenbilder . . . . . . . . . . . . . . . . . . . 521
Edges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
eigene Module . . . . . . . . . . . . . . . . . . . . . 341
Eindeutigkeit . . . . . . . . . . . . . . . . . . . . . . 712
Eingabeprüfung . . . . . . . . . . . . . . . . . . . 965
Elementare Datentypen . . . . . . . . . . . . 720
encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
endform . . . . . . . . . . . . . . . . . . . . . . . . . 1037
endgrent . . . . . . . . . . . . . . . . . . . . . . . . . . 273
endhostent() . . . . . . . . . . . . . . . . . . . . . . . 806
endnetent() . . . . . . . . . . . . . . . . . . . . . . . . 806
endprotoent() . . . . . . . . . . . . . . . . . . . . . . 807
endpwent . . . . . . . . . . . . . . . . . . . . . . . . . 272
endservent() . . . . . . . . . . . . . . . . . . . . . . . 808
Entfernung auf der Erde . . . . . . . . . . 1134
Entität . . . . . . . . . . . . . . . . . . . . . . . . 711, 712
Entry-Widget . . . . . . . . . . . . . . . . . . . . . . 655
ENUM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
Epoche . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415
Equi-Join . . . . . . . . . . . . . . . . . . . . . . . . . 750
ereignisgesteuert . . . . . . . . . . . . . . . . . . . 618
error.log . . . . . . . . . . . . . . . . . . . . . . . . . 1077
Errordokument . . . . . . . . . . . . . . . . . . . . 991
Erste Normalform . . . . . . . . . . . . . . . . . . 715
Escaping . . . . . . . . . . . . . . . . . . . . . . . . . 1036
ethtool . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
eval . . . . . . . . . . . . . . . . . . . . . . . 46, 91, 209
exec . . . . . . . . . . . . . . . . . . . . . . . . . . . 91, 269
exec() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
execute (DBI) . . . . . . . . . . . . . . . . . 772, 774
Expires-Header . . . . . . . . . . . . . . . . . . . . 994
Export-Block . . . . . . . . . . . . . . . . . . . . . . 343
Export-Tags . . . . . . . . . . . . . . . . . . . . . . . 342
Exporter . . . . . . . . . . . . . . . . . . . . . . . . . . 342
externer Code . . . . . . . . . . . . . . . . . . . . . 207
F
Farben . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Farbensehen . . . . . . . . . . . . . . . . . . . . . . 522
Farbmodelle . . . . . . . . . . . . . . . . . . . . . . . 524
Fcc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 903
Fehler im Log . . . . . . . . . . . . . . . . . . . . 1077
Fehlerbehandlung, Browser . . . . . . . . . 991
Fernsteuern . . . . . . . . . . . . . . . . . . . . . . . 890
Festplatte durchsuchen . . . . . . . . . . . 1089
fetch... (DBI) . . . . . . . . . . . . . . . . . . . . . . . 773
fetchrow... (DBI) . . . . . . . . . . . . . . . . . . . 776
fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Index
Filehandle globben . . . . . . . . . . . . . . . . 330
Filehandle, Funktionsparameter . . . . 330
filetest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Finance::YahooQuote . . . . . . . . . . . . . . 869
FLOAT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734
Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 651
for-Anweisung . . . . . . . . . . . . . . . . . . . . . 63
fork . . . . . . . . . . . . . . . . . . . . . . . . . . 279, 280
Fork-Bombe . . . . . . . . . . . . . . . . . . . . . . . 307
Forking Server . . . . . . . . . . . . . . . . . . . . 820
FORM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 970
form . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
format . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Formatierte Ausgabe . . . . . . . . . . . . . . . 119
Formular . . . . . . . . . . . . . . . . . . . . . . . . . . 854
Formular abschicken . . . . . . . . . . . . . . . 974
Formular generieren . . . . . . . . . . . . . . . 999
Formular-Tags . . . . . . . . . . . . . . . . . . . . . 970
Formulardaten decodieren . . . . . . . . . 980
Formulardaten parsen . . . . . . . . . . . . . . 981
Formulare generieren . . . . . . . . . . . . . . 995
Formulargenerierung . . . . . . . . . . . . . 1036
Formularinhalte . . . . . . . . . . . . . . . . . . 1046
Formularmethoden . . . . . . . . . . . . . . . 1038
Formularparameter überschreiben . 1036
Fortschrittsbalken-Widget . . . . . . . . . . 694
fortune . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
forward . . . . . . . . . . . . . . . . . . . . . . . . . . . 941
Fotoalbum . . . . . . . . . . . . . . . . . . . . . . . . 607
Frame-Widget . . . . . . . . . . . . . . . . . . . . . 643
FreeType . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . 69
Funktionen, hyperbolisch . . . . . . . . . 1131
Funktionen, trigonometrisch . . . . . . 1131
Funktionsaufruf . . . . . . . . . . . . . . . . . . . . 69
Funktionseigenschaften . . . . . . . . . . . . . 71
Funktionsparameter . . . . . . . . . . . . . . . . . 70
Funktionsreferenzen . . . . . . . . . . . . . . . 144
G
Gültigkeitsbereich, lexikalisch . . . . . . 325
Gültigkeitsbereich, lokal . . . . . . . . . . . 326
Gammakorrektur . . . . . . . . . . . . . . . . . . 526
Gauß . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423
GD, Bildgröße . . . . . . . . . . . . . . . . . . . . . 534
GD-Bild erzeugen . . . . . . . . . . . . . . . . . . 533
GD-Bild laden . . . . . . . . . . . . . . . . . . . . . 533
GD-Bild speichern . . . . . . . . . . . . . . . . . 534
GD-Modul . . . . . . . . . . . . . . . . . . . . . . . . . 531
GD: Balkendiagramm . . . . . . . . . . . . . . 542
GD: Bildausschnitte kopieren . . . . . . . 555
GD: Bilder kopieren . . . . . . . . . . . . . . . . 555
GD: Bildvergleich . . . . . . . . . . . . . . . . . . 559
GD: Button erstellen . . . . . . . . . . . . . . . 539
GD: clipping . . . . . . . . . . . . . . . . . . . . . . 537
GD: Ellipsen . . . . . . . . . . . . . . . . . . . . . . . 542
GD: Farben zuordnen . . . . . . . . . . . . . . 535
GD: Farbmuster . . . . . . . . . . . . . . . . . . . 553
GD: Flächen füllen . . . . . . . . . . . . 552, 553
GD: Grauwertebild . . . . . . . . . . . . . . . . . 558
GD: interlaced . . . . . . . . . . . . . . . . . . . . . 536
GD: Kreise . . . . . . . . . . . . . . . . . . . . . . . . 542
GD: Linientypen . . . . . . . . . . . . . . . . . . . 540
GD: Polygon zeichnen . . . . . . . . . . . . . 551
GD: Polygone zeichnen . . . . . . . . . . . . 546
GD: Rechteck . . . . . . . . . . . . . . . . . . . . . . 541
GD: Textausgabe . . . . . . . . . . . . . . . . . . 544
GD: transform . . . . . . . . . . . . . . . . . . . . . 549
GD: transparente Farbe . . . . . . . . . . . . 536
GD: Transparenz . . . . . . . . . . . . . . . . . . 558
GD: Wassserzeicheneffekt . . . . . . . . . . 558
GD: Zeichenfunktionen . . . . . . . . . . . . 538
Geometrie . . . . . . . . . . . . . . . . . . . . . . . . 1143
Geometriemanager . . . . . . . . . . . . 619, 628
Geometriemanager, grid . . . . . . . . . . . . 628
Geometriemanager, pack . . . . . . . . . . . 637
Geometriemanager, place . . . . . . . . . . 633
GET-Methode . . . . . . . . . . . . . . . . . . . . . 961
getc() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
getgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
getgrgid . . . . . . . . . . . . . . . . . . . . . . . . . . . 274
getgrnam . . . . . . . . . . . . . . . . . . . . . . . . . 274
gethostbyaddr . . . . . . . . . . . . . . . . . . . . . 808
gethostbyname . . . . . . . . . . . . . . . . . . . . 809
gethostent() . . . . . . . . . . . . . . . . . . . . . . . 806
getlogin . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
getnetbyaddr . . . . . . . . . . . . . . . . . . . . . . 809
getnetbyname . . . . . . . . . . . . . . . . . . . . . 809
getnetent() . . . . . . . . . . . . . . . . . . . . . . . . 806
Getopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
getopt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
Getopt::Long . . . . . . . . . . . . . . . . . . . . . . 150
1223
1224
Index
Getopt::Std . . . . . . . . . . . . . . . . . . . . . . . . 150
getopts . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
getppid . . . . . . . . . . . . . . . . . . . . . . . . . . . 276
getpriority . . . . . . . . . . . . . . . . . . . . . . . . 275
getprotobyname . . . . . . . . . . . . . . . . . . . 810
getprotoent() . . . . . . . . . . . . . . . . . . . . . . 807
getpwent . . . . . . . . . . . . . . . . . . . . . . . . . . 272
getpwnam . . . . . . . . . . . . . . . . . . . . . . . . . 273
getpwuid . . . . . . . . . . . . . . . . . . . . . . . . . . 273
getservbyname . . . . . . . . . . . . . . . . . . . . 810
getservbyport . . . . . . . . . . . . . . . . . . . . . . 811
getservent() . . . . . . . . . . . . . . . . . . . . . . . 808
GETTERS . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Getters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
GIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
GIF, animiert . . . . . . . . . . . . . . . . . . . . . . 603
Gleitpunktzahlen . . . . . . . . . . . . . . . . . . 734
global operator . . . . . . . . . . . . . . . . . . . . 329
Globale Variablen . . . . . . . . . . . . . . . . . 328
gmtime . . . . . . . . . . . . . . . . . . . . . . . . 94, 415
Google . . . . . . . . . . . . . . . . . . . . . . . . . . . 1082
goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65, 69
Grafik-Grundlagen . . . . . . . . . . . . . . . . 520
Grafikformate . . . . . . . . . . . . . . . . . . . . . 529
grafische Benutzerschnittstelle . . . . . . 617
Graph Visualization Tool . . . . . . . . . . . 571
Graph, gerichtet . . . . . . . . . . . . . . . . . . . 572
Graphen, ungerichtet . . . . . . . . . . . . . . 580
Graphentheorie . . . . . . . . . . . . . . . . . . . . 572
GraphViz . . . . . . . . . . . . . . . . . . . . . . . . . . 571
GraphViz, Attribute . . . . . . . . . . . . . . . . 573
GraphViz, Attribute für Kanten . . . . . 575
GraphViz, Attribute für Knoten . . . . . 575
GraphViz, Speichern . . . . . . . . . . . . . . . 578
GraphViz, Tools . . . . . . . . . . . . . . . . . . . 582
Graustufenbilder . . . . . . . . . . . . . . . . . . . 521
Graylisting . . . . . . . . . . . . . . . . . . . . . . . . 917
greedy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
grep() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
gridForget . . . . . . . . . . . . . . . . . . . . . . . . . 627
große Ganzzahlen . . . . . . . . . . . . . . . . 1124
große Gleitkommazahlen . . . . . . . . . . 1127
GROUP . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
GSM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1166
H
h2xs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Häufigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Häufigkeitsverteilung . . . . . . . . . . . . . 1136
Handshake . . . . . . . . . . . . . . . . . . . . . . . 1164
Hanoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Hardware . . . . . . . . . . . . . . . . . . . . . . . . 1153
Hash von Arrays . . . . . . . . . . . . . . . . . . . 191
Hash von Hashes . . . . . . . . . . . . . . . . . . 193
Hash-Slices . . . . . . . . . . . . . . . . . . . . . . . 204
Hashes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Hashfunktionen . . . . . . . . . . . . . . . . . . . . 57
HEAD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 846
header-to-XS . . . . . . . . . . . . . . . . . . . . . . 368
Hello World . . . . . . . . . . . . . . . . . . . . . . . . 29
hidden . . . . . . . . . . . . . . . . . . . . . . . . . . . 1038
Hidden-Felder . . . . . . . . . . . . . . . . . . . . 1054
Hidden-Tag . . . . . . . . . . . . . . . . . . . . . . . 980
HTML . . . . . . . . . . . . . . . . . . . . . . . . 951, 952
HTML-Footer . . . . . . . . . . . . . . . . . . . . . 1035
HTML-Formulare . . . . . . . . . . . . . . . . . . 969
HTML-Header . . . . . . . . . . . . . . . . . . . . 1035
HTML::Display . . . . . . . . . . . . . . . . . . . . 857
HTML::Element . . . . . . . . . . . . . . . . . . . . 858
HTML::Parse . . . . . . . . . . . . . . . . . . . . . . 858
hton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
HTTP . . . . . . . . . . . . . . . . . . . . 831, 952, 953
HTTP-Agent . . . . . . . . . . . . . . . . . . . . . . . 848
http-Botschaften . . . . . . . . . . . . . . . . . . 954
HTTP-Header . . . . . . . . . . . 979, 993, 1032
HTTP-Header abrufen . . . . . . . . . . . . . . 983
HTTP-Methoden . . . . . . . . . . . . . . . . . . . 955
HTTP-Server . . . . . . . . . . . . . . . . . . . . . . 826
HTTP-Umgebungsvariablen . . . . . . . . 958
httpd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 953
hyperbolische Funktionen . . . . . . . . . 1131
Hyperlinks extrahieren . . . . . . . . . . . . . 249
I
I18N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
ICMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
if . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
if-Anweisung . . . . . . . . . . . . . . . . . . . . . . . 61
iframe . . . . . . . . . . . . . . . . . . . . . . . . . . . . 978
Image-Button . . . . . . . . . . . . . . . . . . . . . 975
Image::Magick . . . . . . . . . . . . . . . . . . . . 593
Index
image_button . . . . . . . . . . . . . . . . . . . . 1041
Imagebutton . . . . . . . . . . . . . . . . . . . . . 1041
ImageMagick . . . . . . . . . . . . . . . . . 586, 587
ImageMagick, Bilder konvertieren . . 591
ImageMagick, Grundlagen . . . . . . . . . 588
ImageMagick-Objekt . . . . . . . . . . . . . . . 594
IMAP . . . . . . . . . . . . . . . . . . . . . . . . . 910, 944
import . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Indexer . . . . . . . . . . . . . . . . . . . . . . . . . . 1090
Indexer, Konfiguration . . . . . . . . . . . . 1091
indexer.cf . . . . . . . . . . . . . . . . . . . . . . . . 1092
inet-addr . . . . . . . . . . . . . . . . . . . . . . . . . . 803
inet-ntoa . . . . . . . . . . . . . . . . . . . . . . . . . . 803
inetd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 839
Informationsmethoden . . . . . . . . . . . . . 814
Inheritance . . . . . . . . . . . . . . . . . . . 381, 399
INIT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Inlineframe . . . . . . . . . . . . . . . . . . . . . . . 978
INPUT-Tag . . . . . . . . . . . . . . . . . . . . . . . . 971
insert . . . . . . . . . . . . . . . . . . . . . . . . 627, 728
Instanz . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Integration . . . . . . . . . . . . . . . . . . . . . . . 1150
Internationalisierung . . . . . . . . . . . . . . 309
Interpolation . . . . . . . . . . . . . . . . . . . . . 1141
Interpreter . . . . . . . . . . . . . . . . . . . . . . . . . . 31
IO::Socket . . . . . . . . . . . . . . . . . . . . 803, 862
IO::Socket::INET . . . . . . . . . . . . . . . . . . . 812
IP-Adressen packen . . . . . . . . . . . . . . . . 805
IP-Adressen umrechnen . . . . . . . 788, 805
iptocountry . . . . . . . . . . . . . . . . . . . . . . . 785
isa() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406
ISO 3166 . . . . . . . . . . . . . . . . . . . . . . . . . . 316
ISO 4217 . . . . . . . . . . . . . . . . . . . . . . . . . . 317
ISO-8859-xx . . . . . . . . . . . . . . . . . . . . . . 311
Iteration . . . . . . . . . . . . . . . . . . . . . . . . 73, 97
J
Jahreskalender . . . . . . . . . . . . . . . . . . . 1010
JFI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
JFIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
join . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Joins . . . . . . . . . . . . . . . . . . . . . . . . . 723, 747
JPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
JPG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
Julianischer Tag . . . . . . . . . . . . . . 416, 419
K
Kalenderrechnung . . . . . . . . . . . . . . . . . 425
Kalenderwoche . . . . . . . . . . . . . . . . . . . . 425
Kapselung . . . . . . . . . . . . . . . . . . . . . . . . . 380
Keks-Server . . . . . . . . . . . . . . . . . . . . . . . 825
kill . . . . . . . . . . . . . . . . . . . . . . . . . . . 280, 286
Kindprozess . . . . . . . . . . . . . . . . . . . . . . . 833
Klammern . . . . . . . . . . . . . . . . . . . . . . . . . . 75
Klasse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 379
Klasse SUPER . . . . . . . . . . . . . . . . . . . . . 405
Klasse, Definition . . . . . . . . . . . . . . . . . . 380
Klassen . . . . . . . . . . . . . . . . . . . . . . 377, 378
Klassenmethode . . . . . . . . . . 379, 388, 401
Kommandozeile . . . . . . . . . . . . . . . . . . . 149
Kommandozeilen-Schalter . . . . . . . . . 150
Kommandozeilenparameter . . . . 148, 149
Komplexe Datenstrukturen . . . . 177, 195
komplexe Zahlen . . . . . . . . . . . . . . . . . 1129
Konfiguration . . . . . . . . . . . . . . . . . . . . . 259
Konfiguration, Gruppen . . . . . . . . . . . . 264
Konfiguration, Key-Value-Paare . . . . 261
Konfiguration, Perl-Code . . . . . . . . . . . 260
Konsole . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
Konstruktor . . . . . . . . . . . . . . . . . . . . . . . 380
Kontext . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Kontrollstrukturen . . . . . . . . . . . . . . . . . . 60
Konzil von Nicäa . . . . . . . . . . . . . . . . . . 422
Koordinaten, kartesisch . . . . . . . . . . . . 560
Koordinaten, sphärische . . . . . . . . . . . 1133
Koordinatensysteme . . . . . . . . . . . . . . . 560
Koordinatensysteme, Funktionen . . . 562
L
L10N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309
Label-Widget . . . . . . . . . . . . . . . . . . . . . . 649
LANG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
last . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Latin1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
LC_ALL . . . . . . . . . . . . . . . . . . . . . . . . . . . 310
LC_COLLATE . . . . . . . . . . . . . . . . . . . . . . 310
LC_CTYPE . . . . . . . . . . . . . . . . . . . . . . . . . 310
LC_MESSAGES . . . . . . . . . . . . . . . . . . . . 310
LC_MONETARY . . . . . . . . . . . . . . . . . . . . 310
LC_NUMERIC . . . . . . . . . . . . . . . . . . . . . . 310
1225
1226
Index
LC_TIME . . . . . . . . . . . . . . . . . . . . . . . . . . 310
Lebensdauer . . . . . . . . . . . . . . . . . . . . . . . . 77
lib . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
LIKE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Lineare Regression . . . . . . . . . . . . . . . . 1141
Linkcheck . . . . . . . . . . . . . . . . . . . . . . . . 1119
List::Util . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Listbox-Widget . . . . . . . . . . . . . . . . . . . . 666
Liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48, 49
listen (Socket) . . . . . . . . . . . . . . . . . . . . . 801
Listen durchsuchen . . . . . . . . . . . . . . . . 242
Listen modifizieren . . . . . . . . . . . . . . . . 244
Listenkontext . . . . . . . . . . . . . . . . . . . . . . . 49
Literale . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
LOAD DATA . . . . . . . . . . . . . . . . . . . . . . . 756
local . . . . . . . . . . . . . . . . . . . . . . 33, 321, 326
locale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
locale-Kategorien . . . . . . . . . . . . . . . . . . 310
locale-Konfiguration . . . . . . . . . . . . . . . 313
locale-Programmierung . . . . . . . . . . . . 313
Locale::Country . . . . . . . . . . . . . . . . . . . 316
localeconv . . . . . . . . . . . . . . . . . . . . . . . . 313
locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Locales/Internationalisierung . . . . . . . 309
localtime . . . . . . . . . . . . . . . . . . . 55, 92, 415
Location . . . . . . . . . . . . . . . . . . . . . 962, 994
Logfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
Logging . . . . . . . . . . . . . . . . . . . . . . . . . . . 841
Logikoperatoren . . . . . . . . . . . . . . . . . . . . 39
lokale Suchmaschine . . . . . . . . . . . . . 1084
Lokalisierung . . . . . . . . . . . . . . . . . . . . . . 309
Lottozahlen . . . . . . . . . . . . . . . . . . . . . . . . 89
lsusb . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1203
LWP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
LWP::Simple . . . . . . . . . . . . . . . . . . . . . . 845
M
M9803R . . . . . . . . . . . . . . . . . . . . . . . . . . 1194
Magic Packet . . . . . . . . . . . . . . . . . . . . . . 876
Mail Transport Agent . . . . . . . . . . . . . . 911
Mail-Alias . . . . . . . . . . . . . . . . . . . . . . . . 939
Mail-Analysator . . . . . . . . . . . . . . . . . . . 935
Mail-Body . . . . . . . . . . . . . . . . . . . . . . . . 903
Mail-Client . . . . . . . . . . . . . . . . . . . . . . . . 902
Mail-Formular . . . . . . . . . . . . . . . . . . . 1008
Mail-Header . . . . . . . . . . . . . . . . . . 903, 935
Mail-Header-Felder . . . . . . . . . . . . . . . . 903
Mail::IMAPClient . . . . . . . . . . . . . . . . . . 944
Mailinglisten . . . . . . . . . . . . . . . . . . . . . . 904
Mailspool . . . . . . . . . . . . . . . . . . . . . . . . . 902
Mailverteiler . . . . . . . . . . . . . . . . . . . . . . 940
MainLoop . . . . . . . . . . . . . . . . . . . . 620, 621
make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Makefile.PL . . . . . . . . . . . . . . . . . . . . . . . 369
MANIFEST-Datei . . . . . . . . . . . . . . . . . . 371
Manualpage-Gateway . . . . . . . . . . . . . 1015
map . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
map() . . . . . . . . . . . . . . . . . . . . . . . . 244, 250
Math::BigFloat . . . . . . . . . . . . . . 1124, 1127
Math::BigInt . . . . . . . . . . . . . . . . . . . . . 1124
Math::Complex . . . . . . . . . . . . . 1124, 1129
Math::Trig . . . . . . . . . . . . . . . . . . 1124, 1131
Mathematik-Funktionen . . . . . . . . . . . . 87
Mathematikmodule . . . . . . . . . . . . . . . 1124
Mathemodule . . . . . . . . . . . . . . . . . . . . . 1124
Maus-Widgets . . . . . . . . . . . . . . . . . . . . . 698
Maximum . . . . . . . . . . . . . . . . . . . . . . . . 1139
MD5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
Median . . . . . . . . . . . . . . . . . . . . . . . . . . 1139
Mehrfachvererbung . . . . . . . . . . . . . . . . 399
Menu-Widget . . . . . . . . . . . . . . . . . . . . . 687
Menubutton-Widget . . . . . . . . . . . . . . . 687
Message-Id . . . . . . . . . . . . . . . . . . . . . . . . 903
Messagebox-Widget . . . . . . . . . . . . . . . 657
Messwerte, Maximum . . . . . . . . . . . . . 1139
Messwerte, Minimum . . . . . . . . . . . . . 1139
Messwerterfassung, seriell . . . . . . . . . 1194
Metadaten (DBI) . . . . . . . . . . . . . . . . . . . 769
Methoden . . . . . . . . . . . . . . . . . . . . 377, 379
Methoden überladen . . . . . . . . . . . . . . . 382
MIME . . . . . . . . . . . . . . . . . . . 905, 921, 953
MIME-Mails . . . . . . . . . . . . . . . . . . . . . . . 927
MIME::Body . . . . . . . . . . . . . . . . . . . . . . 934
MIME::Entity . . . . . . . . . . . . . . . . . 927, 932
MIME::Head . . . . . . . . . . . . . . . . . . . . . . . 933
MIME::Light . . . . . . . . . . . . . . . . . . . . . . 922
MIME::Parser . . . . . . . . . . . . . . . . . . . . . . 927
Mini-MTA . . . . . . . . . . . . . . . . . . . . . . . . . 920
Minimum . . . . . . . . . . . . . . . . . . . . . . . . 1139
Mittelwert . . . . . . . . . . . . . . . . . . . . . . . . 1137
Modalwert . . . . . . . . . . . . . . . . . . . . . . . 1139
Modem . . . . . . . . . . . . . . . . . . . . . . . . . . 1166
Index
Modembetrieb . . . . . . . . . . . . . . . . . . . . 1188
Modul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
Modul bauen . . . . . . . . . . . . . . . . . . . . . . 341
Modul erstellen . . . . . . . . . . . . . . . . . . . . 368
Modul importieren . . . . . . . . . . . . . . . . . 335
Modul installieren . . . . . . . . . . . . . . . . . 339
INC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337
Modul, CPAN . . . . . . . . . . . . . . . . . . . . . . 339
Modul, Export-Tags . . . . . . . . . . . . . . . . 336
Modul, Import-Tags . . . . . . . . . . . . . . . . 336
Modul, INC-Pfad erweitern . . . . . . . . . 337
Modul, Pfade . . . . . . . . . . . . . . . . . . . . . . 337
Modul, Returnwert . . . . . . . . . . . . . . . . . 335
Modul, Testprogramme . . . . . . . . . . . . .372
Modul, use lib . . . . . . . . . . . . . . . . . . . . . 337
Modul-Schnittstelle . . . . . . . . . . . . . . . . 345
Modul-Schnittstellen . . . . . . . . . . . . . . 342
Modulübersicht . . . . . . . . . . . . . . . . . . . . 348
Module . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Module finden . . . . . . . . . . . . . . . . . . . . .337
Module nutzen . . . . . . . . . . . . . . . . . . . . 335
modules . . . . . . . . . . . . . . . . . . . . . . . . . . 333
Modulpfade auflisten . . . . . . . . . . . . . . 338
Modultest . . . . . . . . . . . . . . . . . . . . 359, 375
Modultests . . . . . . . . . . . . . . . . . . . . . . . . 357
Monatserster . . . . . . . . . . . . . . . . . . . . . . 429
Monochrombilder . . . . . . . . . . . . . . . . . . 521
Morphing . . . . . . . . . . . . . . . . . . . . . . . . . 603
MTA . . . . . . . . . . . . . . . . . . . . . . . . . 902, 911
multipart . . . . . . . . . . . . . . . . . . . . . . . . . . 935
multipart/alternative . . . . . . . . . . 925, 927
multipart/mixed . . . . . . . . . . . . . . . . . . . 923
Mustersuche . . . . . . . . . . . . . . . . . . . . . . . 217
Mustervergleich . . . . . . . . . . . . . . . . . . . 214
MX-Record . . . . . . . . . . . . . . . . . . . . . . . . 816
my . . . . . . . . . . . . . . . . . . . . . . . 33, 321, 325
my.cnf . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
my.ini . . . . . . . . . . . . . . . . . . . . . . . . . . . . 729
MySQL . . . . . . . . . . . . . . . . . 709, 729, 1106
mysql . . . . . . . . . . . . . . . . . . . . . . . . 727, 732
MySQL Datentypen . . . . . . . . . . . . . . . . 770
MySQL, Volltextindex . . . . . . . . . . . . . 1109
MySQL-Client . . . . . . . . . . . . . . . . . . . . . 727
MySQL-Datentypen . . . . . . . . . . . . . . . . 733
MySQL-Fehlerbehandlung . . . . . . . . . . 781
MySQL-Inbetriebnahme . . . . . . . . . . . . 729
MySQL-Installation . . . . . . . . . . . . . . . . 729
MySQL-Spezialfunktionen . . . . . . . . . . 781
mysqladmin . . . . . . . . . . . . . . . . . . . . . . . 729
N
Nachricht . . . . . . . . . . . . . . . . . . . . . . . . . 379
Named Pipes . . . . . . . . . . . . . . . . . . . . . . 296
Namensauflösung . . . . . . . . . . . . . . . . . . 815
Nameserver . . . . . . . . . . . . . . . . . . . . . . . 815
Natural Join . . . . . . . . . . . . . . . . . . . . . . . 751
NCSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 952
Net::IMAP::Simple . . . . . . . . . . . . . . . . . 944
Net::Ping . . . . . . . . . . . . . . . . . . . . . . . . . 863
Net::POP3 . . . . . . . . . . . . . . . . . . . . . . . . . 941
Net::SMTP . . . . . . . . . . . . . . . . . . . . . . . . 917
Netwerk-Server . . . . . . . . . . . . . . . . . . . . 817
Netzdienste aufrufen . . . . . . . . . . . . . . . 986
Netzwerk-Client . . . . . . . . . . . . . . . . . . . 817
Netzwerkinformationen . . . . . . . . . . . . 806
Netzwerkkamera . . . . . . . . . . . . . . . . . . . 887
Netzwerkprogrammierung . . . . . . . . . . 793
Newsletter . . . . . . . . . . . . . . . . . . . . . . . . 925
Newton-Verfahren . . . . . . . . . . . . . . . . 1148
next . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 572
Non-Parsed-Header . . . . . . . . . . . . . . . . 993
Normalformen . . . . . . . . . . . . . . . . . . . . . 719
Normalverteilung . . . . . . . . . . . . . . . . . 1138
Notebook-Widget . . . . . . . . . . . . . . . . . . 692
NPH-Programm . . . . . . . . . . . . . . . . . . 1033
ntoh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
NULL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
Null-Byte . . . . . . . . . . . . . . . . . . . . . . . . . 967
Nullmodem . . . . . . . . . . . . . . . . . . . . . . 1165
Nullstellen . . . . . . . . . . . . . . . . . . . . . . . 1145
Numerik . . . . . . . . . . . . . . . . . . . . . . . . . 1123
O
Objekt, Definition . . . . . . . . . . . . . . . . . . 379
Objekte . . . . . . . . . . . . . . . . . . . . . . . 377, 378
Objektmethode . . . . . . . . . . . . . . . . 388, 401
Objekttypen . . . . . . . . . . . . . . . . . . . . . . . 712
OOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 377
OOP-Ansatz . . . . . . . . . . . . . . . . . . . . . . . 379
OOP-Begriffe . . . . . . . . . . . . . . . . . . . . . . 383
open . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1227
1228
Index
Operationen . . . . . . . . . . . . . . . . . . . . . . . . 37
ORDER BY . . . . . . . . . . . . . . . . . . . . . . . . 742
Osterdatum . . . . . . . . . . . . . . . . . . . . . . . . 422
Osterparadoxien . . . . . . . . . . . . . . . . . . . 423
Osterrechnung . . . . . . . . . . . . . . . . . . . . . 423
our . . . . . . . . . . . . . . . . . . . . . . . 33, 321, 328
P
Pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
pack . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
Package . . . . . . . . . . . . . . . . . . . . . . . . . . . 334
Package-Namen . . . . . . . . . . . . . . . . . . . 336
Packages . . . . . . . . . . . . . . . . . . . . . 321, 322
packForget . . . . . . . . . . . . . . . . . . . . . . . . 627
Pakete . . . . . . . . . . . . . . . . . . . . . . . . 321, 322
parallele Schnittstelle . . . . . . . . . . . . . 1155
Parallelport-Typen . . . . . . . . . . . . . . . . 1159
Parameter-Array . . . . . . . . . . . . . . . . . . . . 74
Parameterübergabe . . . . . . . . . . . . . . . . . . 71
parse_config . . . . . . . . . . . . . . . . . . . . . . 264
Partieller Header . . . . . . . . . . . . . . . . . . . 994
password_field . . . . . . . . . . . . . . . . . . . 1038
Passwort . . . . . . . . . . . . . . . . . . . . . . . . . . 849
Passwort (DBI) . . . . . . . . . . . . . . . . . . . . . 768
PATH_INFO . . . . . . . . . . . . . . . . . . . . . . 1052
PDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Perl Package Manager . . . . . . . . . . . . . 340
Perl-Client . . . . . . . . . . . . . . . . . . . . . . . . 803
Perl-Dokumentation . . . . . . . . . . . . . . . . 32
Perl-Kommandozeile . . . . . . . . . . . . . . . . 31
Perl-Server . . . . . . . . . . . . . . . . . . . . . . . . 803
Perl/Tk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
Perl6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152
perldoc . . . . . . . . . . . . . . . . . . . . . . . 172, 175
Perlinterpreter . . . . . . . . . . . . . . . . . . . . . . 29
perllocale . . . . . . . . . . . . . . . . . . . . . . . . . 315
PerlMagick . . . . . . . . . . . . . . . . . . . 586, 593
PerlMagick, Append . . . . . . . . . . . . . . . 597
PerlMagick, Bilder konvertieren . . . . 596
PerlMagick, Button . . . . . . . . . . . . . . . . 602
PerlMagick, Composite . . . . . . . . . . . . . 602
PerlMagick, Montage . . . . . . . . . . . . . . 598
PerlMagick, Schriftdefinition . . . . . . . 602
PerlMagick, Textausgabe . . . . . . . . . . . 599
perltidy . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Permutationen . . . . . . . . . . . . . . . . . . . . 1152
Pfadinformation . . . . . . . . . . . . . . . . . . 1052
PHP-Perl-Kopplung . . . . . . . . . . . . . . . . 978
Physikalisch-Technische Bundesanstalt 836
Ping . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 863
Pinnwand . . . . . . . . . . . . . . . . . . . . . . . . 1019
Pipes . . . . . . . . . . . . . . . . . . . . . . . . . 110, 293
place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 627
placeForget . . . . . . . . . . . . . . . . . . . . . . . 627
Plain Old Documentation . . . . . . . . . . 172
pmm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333
PNG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 531
POD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
Pollin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 890
Polling . . . . . . . . . . . . . . . . . . . . . 1181, 1191
Polygonfläche . . . . . . . . . . . . . . . . . . . . 1143
Polygonumfang . . . . . . . . . . . . . . . . . . 1143
Polymorphie . . . . . . . . . . . . . . . . . . 382, 383
POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907
pop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
POP3 . . . . . . . . . . . . . . . . . . . . . . . . . 907, 941
POP3-Protokoll . . . . . . . . . . . . . . . . . . . . 908
Popup-Menü . . . . . . . . . . . . . . . . . . . . . 1040
popup_menu . . . . . . . . . . . . . . . . . . . . . 1040
Port 110 . . . . . . . . . . . . . . . . . . . . . . . . . . . 908
Port 50290 . . . . . . . . . . . . . . . . . . . . . . . . 893
Port-Adressen . . . . . . . . . . . . . . . . . . . . 1157
Portadressen 0x378/0x278 . . . . . . . . 1161
Portscanner . . . . . . . . . . . . . . . . . . . . . . . 862
Positivliste . . . . . . . . . . . . . . . . . . . . . . . 1085
POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
POSIX-Zeichenklassen . . . . . . . . . . . . . 222
POST-Methode . . . . . . . . . . . . . . . . . . . . 961
ppm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 340
Pragma: no-cache . . . . . . . . . . . 994, 1002
Pragmas . . . . . . . . . . . . . . . . . . . . . . . 47, 355
Preforking . . . . . . . . . . . . . . . . . . . . . . . . 838
prepare (DBI) . . . . . . . . . . . . . . . . . 772, 774
Prepared Statements . . . . . . . . . . . . . . 1069
Primärschlüssel . . . . . . . . . . . . . . . 712, 727
PrintError . . . . . . . . . . . . . . . . . . . . . . . . . 766
Programm ausführen . . . . . . . . . . . . . . . 30
Programmformat . . . . . . . . . . . . . . . . . . 167
Programmierung . . . . . . . . . . . . . . . . . . . . 27
Programmkonfiguration . . . . . . . . . . . 259
Programmoptionen . . . . . . . . . . . . . . . . 149
Programmstart . . . . . . . . . . . . . . . . . . . . . 30
Index
Protokoll . . . . . . . . . . . . . . . . . . . . . . . . . . 893
Protokollentwurf . . . . . . . . . . . . . . . . . . 879
Protokollierung . . . . . . . . . . . . . . . . . . . . 841
Proxy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
Prozesse . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Prozesse und Signale . . . . . . . . . . . . . . 277
PTB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 836
push . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Q
q . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
qr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237
Quantifizierer . . . . . . . . . . . . . . . . . 215, 225
Querystring . . . . . . . . . . . . . . . . . . . . . . . 856
Querystring umwandeln . . . . . . . . . . . . 961
Quizprogramm . . . . . . . . . . . . . . . . . . . . 189
quote regex Operator . . . . . . . . . . . . . . 237
quoted-printable . . . . . . . . . . . . . . . . . . 906
quotemeta . . . . . . . . . . . . . . . . . . . . . . . . 227
Quoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
R
Römische Zahlen . . . . . . . . . . . . . . . . . . . 76
radio_group . . . . . . . . . . . . . . . . . . . . . . 1040
Radiobutton . . . . . . . . . . . . . . . . . . . . . . 1039
Radiobutton-Tag . . . . . . . . . . . . . . . . . . 972
Radiobutton-Widget . . . . . . . . . . . . . . . 664
RaiseError . . . . . . . . . . . . . . . . . . . . . . . . . 766
Rangfolge der Operatoren . . . . . . . . . . . 42
Rasterformate . . . . . . . . . . . . . . . . . . . . . 520
README-Datei . . . . . . . . . . . . . . . . . . . . 370
Rechnen . . . . . . . . . . . . . . . . . . . . . . . . . 1123
Rechner suchen . . . . . . . . . . . . . . . . . . . 866
recode . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
redo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Redundanzfreiheit . . . . . . . . . . . . . . . . . 710
Referenzen . . . . . . . . . . . . . . . . . . . 131, 178
Referenzen auf Filehandles . . . . . . . . . 145
Referenzen auf Funktionen . . . . . . . . . 144
REGEXP . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Regression, lineare . . . . . . . . . . . . . . . . 1141
Reguläre Ausdrücke . . . . . . . . . . . . . . . . 213
Reguläre Ausdrücke, Alternativen . . 225
Reguläre Ausdrücke, Anker . . . . . . . . . 221
Reguläre Ausdrücke, Begrenzer . . . . . 234
Reguläre Ausdrücke, Besonderheiten 237
Reguläre Ausdrücke, Helfer . . . . . . . . 238
Reguläre Ausdrücke, Klammern . . . . 228
Reguläre Ausdrücke, Kontext . . . . . . . 216
Reguläre Ausdrücke, Modifizierer . . . 230
Reguläre Ausdrücke, Multiline-Modus 231
Reguläre Ausdrücke, Operatoren . . . . 215
Reguläre Ausdrücke, Prinzip . . . . . . . . 214
Reguläre Ausdrücke, Quantifizierer . 225
Reguläre Ausdrücke, Rückbezüge . . . 228
Regula falsi . . . . . . . . . . . . . . . . . . . . . . 1147
Regular Expressions . . . . . . . . . . . . . . . 213
Rekursion . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Relaiskarte . . . . . . . . . . . . . . . . . . . . . . . 1162
relational . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Relationale Operationen . . . . . . . . . . . . 721
Relationen, Typen . . . . . . . . . . . . . . . . . 714
repeat . . . . . . . . . . . . . . . . . . . 627, 658, 662
Request-Line . . . . . . . . . . . . . . . . . . . . . . 827
require . . . . . . . . . . . . . . . . . . . . . . . 207, 209
reset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041
Resetbutton . . . . . . . . . . . . . . . . . . . . . . 1041
Returncodes, HTTP . . . . . . . . . . . . . . . . 956
RFC 821 . . . . . . . . . . . . . . . . . . . . . . . . . . . 911
RGB-Modell . . . . . . . . . . . . . . . . . . . . . . . 525
Robots . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081
robots.txt . . . . . . . . . . . . . . . . . . . . . . . . 1083
Rollback . . . . . . . . . . . . . . . . . . . . . . . . . . 767
root-Rechte . . . . . . . . . . . . . . . . . . . . . . 1154
RS232 . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163
RS232-Pinbelegung . . . . . . . . . . . . . . . 1165
RS232-Schnittstelle . . . . . . . . . . . . . . . 1163
RS232-Signale . . . . . . . . . . . . . . . . . . . 1165
S
Scale-Widget . . . . . . . . . . . . . . . . . . . . . . 670
Scaliger . . . . . . . . . . . . . . . . . . . . . . . . . . . 417
Schaltjahr . . . . . . . . . . . . . . . . . . . . . . . . . 420
Schlagwortkatalog . . . . . . . . . . . . . . . . 1089
Schleifenanweisungen . . . . . . . . . . . . . . 63
Schnittstelle, seriell . . . . . . . . . . . . . . . 1163
Schnittstellentester . . . . . . . . . . . . . . . 1174
Schwartz’sche Transformation . . . . . . 251
Screenshot . . . . . . . . . . . . . . . . . . . . . . . . 590
Screenshots . . . . . . . . . . . . . . . . . . . . . . . 566
Scrollbar-Widget . . . . . . . . . . . . . . . . . . 670
Scrolled-Widget . . . . . . . . . . . . . . . . . . . 670
1229
1230
Index
scrolling_list . . . . . . . . . . . . . . . . . . . . . 1040
Scrollliste . . . . . . . . . . . . . . . . . . . . . . . . 1040
seek . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Seitenabruf . . . . . . . . . . . . . . . . . . . . . . . 847
Sekantenmethode . . . . . . . . . . . . . . . . . 1147
SELECT . . . . . . . . . . . . . . . . . . . . . . 739, 747
select . . . . . . . . . . . . . . . . . . . 627, 728, 1161
SELECT-Tag . . . . . . . . . . . . . . . . . . . . . . . 973
select... (DBI) . . . . . . . . . . . . . . . . . . . . . . 775
selectrow... (DBI) . . . . . . . . . . . . . . . . . . . 780
Senden, seriell . . . . . . . . . . . . . . . . . . . . 1184
sendmail . . . . . . . . . . . . . . . . . 902, 911, 914
serielle Schnittstelle . . . . . . . . . . . . . . . 1163
Serverdienste . . . . . . . . . . . . . . . . . . . . . . 839
Session-Tracking . . . . . . . . . . . . . . . . . 1050
SET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
setgrent . . . . . . . . . . . . . . . . . . . . . . . . . . . 273
sethostent() . . . . . . . . . . . . . . . . . . . . . . . . 806
setlocale . . . . . . . . . . . . . . . . . . . . . . . . . . 313
setnetent() . . . . . . . . . . . . . . . . . . . . . . . . . 806
setpriority . . . . . . . . . . . . . . . . . . . . . . . . . 275
setprotoent() . . . . . . . . . . . . . . . . . . . . . . . 807
setpwent . . . . . . . . . . . . . . . . . . . . . . . . . . 272
setservent() . . . . . . . . . . . . . . . . . . . . . . . . 808
SETTERS . . . . . . . . . . . . . . . . . . . . . . . . . . 398
Setters . . . . . . . . . . . . . . . . . . . . . . . . . . . . 394
Signale . . . . . . . . . . . . . . . . . . . . . . . . . . . 285
Signalhandler . . . . . . . . . . . . 287, 833, 889
Signalhandler für die . . . . . . . . . . . . . . 991
Signalnummern . . . . . . . . . . . . . . . . . . . 285
sigtrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Skalare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
SMTP-Versand . . . . . . . . . . . . . . . . . . . . 915
Socket . . . . . . . . . . . . . . . . . . . . . . . 794, 795
Socket-Funktionen . . . . . . . . . . . . 796, 799
Socketprogrammierung . . . . . . . . . . . . 794
Sommerzeit . . . . . . . . . . . . . . . . . . . . . . . 415
Sonderzeichen . . . . . . . . . . . . . . . . . . . . . . 44
Sonnenaufgang . . . . . . . . . . . . . . . . . . 1135
sort . . . . . . . . . . . . . . . . . . . . . . . . 47, 84, 241
sort() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Sortieren . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
Speicher . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Speicherbereinigung . . . . . . . . . . . . . . . 147
sphärische Koordinaten . . . . . . . . . . . 1133
Spider . . . . . . . . . . . . . . . . . . . . . . . . . . . 1089
splice() . . . . . . . . . . . . . . . . . . . . . . . 241, 252
split . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
SPP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159
Sprüche-Server . . . . . . . . . . . . . . . . . . . . 824
Spracheinstellung . . . . . . . . . . . . . 309, 429
Sprachkontext . . . . . . . . . . . . . . . . . . . . . . 32
Sprunganweisung . . . . . . . . . . . . . . . . . . . 65
SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 725
SQL, Großschreibung . . . . . . . . . . . . . . 726
SQL, Kleinschreibung . . . . . . . . . . . . . . 726
SQL-Injection . . . . . . . . . . . . . . . 790, 1069
SQL-Kommandogruppen . . . . . . . . . . . 728
SQL-Syntax . . . . . . . . . . . . . . . . . . . . . . . 726
Standard-HTML-Elemente . . . . . . . . . 1042
Standardabweichung . . . . . . . . . . . . . 1137
Standardfehler . . . . . . . . . . . . . . 1137, 1139
Standardmodule . . . . . . . . . . . . . . 346, 348
startform . . . . . . . . . . . . . . . . . . . . . . . . . 1037
Statistik . . . . . . . . . . . . . . . . 59, 1123, 1136
Statusport . . . . . . . . . . . . . . . . . . . . . . . . 1161
Statusport (parallel) . . . . . . . . . . . . . . . 1158
STDERR . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
STDIN . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
STDOUT . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
Steuerport . . . . . . . . . . . . . . . . . . . . . . . . 1161
Steuerport (parallel) . . . . . . . . . . . . . . . 1157
Stil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
Stoppwortliste . . . . . . . . . . . . . . . . . . . . 1094
Storable . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
Stream . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
strftime . . . . . . . . . . . . . . . . . . . . . . . . . . . 315
Strichcode . . . . . . . . . . . . . . . . . . . . . . . . 583
Strichcode, 2-aus-5 . . . . . . . . . . . . . . . . 584
Strichcode, 2D . . . . . . . . . . . . . . . . . . . . . 584
Strichcode, EAN . . . . . . . . . . . . . . . . . . . 583
strict . . . . . . . . . . . . . . . . . . . . . . . . . . . 33, 47
Stringersetzung . . . . . . . . . . . . . . . . . . . . 214
Stringfunktionen . . . . . . . . . . . . . . . . . . . 81
Strings quotieren (DBI) . . . . . . . . . . . . . 767
Stringsuche . . . . . . . . . . . . . . . . . . . . . . . 241
stty-Kommando . . . . . . . . . . . . . . . . . . 1177
stty-Methoden . . . . . . . . . . . . . . . . . . . . 1180
stty-Programm . . . . . . . . . . . . . . . . . . . 1177
Styleguide . . . . . . . . . . . . . . . . . . . . . . . . 168
Sub-SELECT . . . . . . . . . . . . . . . . . . . . . . . 754
Subklassen . . . . . . . . . . . . . . . . . . . . . . . . 400
Index
Submit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974
submit . . . . . . . . . . . . . . . . . . . . . . . . . . . 1041
Submitbutton . . . . . . . . . . . . . . . . . . . . 1041
subs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
substr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Suchanfrage . . . . . . . . . . . . . . . . . . . . . . . 856
Suchen . . . . . . . . . . . . . . . . . . . . . . . . . . . 1081
Suchfunktion . . . . . . . . . . . . . . . . . . . . . 1104
Suchmaschinen . . . . . . . . . . . . . . . . . . . 1081
Suchprogramm . . . . . . . . . . . . . . . . . . . 1090
SUPER . . . . . . . . . . . . . . . . . . . . . . . . . . . . 405
Superklassen . . . . . . . . . . . . . . . . . . . . . . 400
Swish-E . . . . . . . . . . . . . . . . . . . . . . . . . . 1110
switch-case . . . . . . . . . . . . . . . . . . . . . . . . . 67
Syslog . . . . . . . . . . . . . . . . . . . . . . . 840, 841
system . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269
system() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Systemfunktionen . . . . . . . . . . . . . . . . . 270
Systeminformationen . . . . . . . . . . . . . . 267
Systemkommandos . . . . . . . . . . . . .89, 269
Systemvariablen . . . . . . . . . . . . . . . . . . . 268
T
Tabelle ändern . . . . . . . . . . . . . . . . . . . . 760
Tabelle anlegen . . . . . . . . . . . . . . . . . . . . 727
Tabelle generieren . . . . . . . . . . . . . . . . 1043
Tabellen anlegen . . . . . . . . . . . . . . . . . . . 771
Tabellen clonen . . . . . . . . . . . . . . . . . . . 756
Tabellen importieren . . . . . . . . . . . . . . . 756
Taint Check . . . . . . . . . . . . . . . . . . . . . . . 966
Tangentenmethode . . . . . . . . . . . . . . . 1148
TAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358
Tastatur-Widgets . . . . . . . . . . . . . . . . . . 698
Telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
telnet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
Terminal, seriell . . . . . . . . . . . . . . . . . . 1186
Test Anything Protocol . . . . . . . . . . . . 358
Test::More . . . . . . . . . . . . . . . . . . . . . . . . 362
Test::Pod . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Test::Simple . . . . . . . . . . . . . . . . . . . . . . . 360
Testmodule . . . . . . . . . . . . . . . . . . . . . . . . 360
Testprotokoll . . . . . . . . . . . . . . . . . . . . . . 364
TEXT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
Text . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 461
Text-Widget . . . . . . . . . . . . . . . . . . . . . . . 683
textarea . . . . . . . . . . . . . . . . . . . . . . . . . . 1038
TEXTAREA-Tag . . . . . . . . . . . . . . . . . . . 973
Textauszeichnung . . . . . . . . . . . . . . . . 1020
textfield . . . . . . . . . . . . . . . . . . . . . . . . . 1038
Thumbnails . . . . . . . . . . . . . . . . . . . . . . . 605
TIFF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 530
TIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 735
time . . . . . . . . . . . . . . . . . . . . . . . 55, 92, 415
Time::Local . . . . . . . . . . . . . . . . . . . . . . . 415
Timeout . . . . . . . . . . . 843, 846, 1181, 1191
Timeserver . . . . . . . . . . . . . . . . . . . . . . . . 835
TIMESTAMP . . . . . . . . . . . . . . . . . . . . . . 736
Tischmultimeter . . . . . . . . . . . . . . . . . . 1194
Tk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 617
TK-Menüs . . . . . . . . . . . . . . . . . . . . . . . . . 687
Toplevel-Widget . . . . . . . . . . . . . . . . . . . 645
tr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
tr-Optionen . . . . . . . . . . . . . . . . . . . . . . . 219
Transaktionen . . . . . . . . . . . . . . . . . . . . . 767
Transliterationsoperator . . . . . . . . . . . . 218
Trendnet . . . . . . . . . . . . . . . . . . . . . . . . . . 887
Trig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1131
trigonometrische Funktionen . . . . . . 1131
TrueType . . . . . . . . . . . . . . . . . . . . . . . . . . 599
Tupel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
Type Globs . . . . . . . . . . . . . . . . . . . . . . . . 329
Typeglobs . . . . . . . . . . . . . . . . . . . . . . . . . 329
U
Uhrzeit . . . . . . . . . . . . . . . . . . . . . . . . 92, 413
Umfrage-CGI . . . . . . . . . . . . . . . . . . . . . 1000
Umrechnung RGB-CMY . . . . . . . . . . . . 525
Unicode . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
UNIVERSAL . . . . . . . . . . . . . . . . . . . . . . . 408
Universal Serial Bus . . . . . . . . . . . . . . 1202
Unpack . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Unterprogramme . . . . . . . . . . . . . . . . . . . 69
UPDATE . . . . . . . . . . . . . . . . . . . . . . . . . . 759
URL-Encoding . . . . . . . . . . . . . . . . . . . . 1053
USB-Infos . . . . . . . . . . . . . . . . . . . . . . . 1203
USB-Schnittstelle . . . . . . . . . . . . . . . . . 1202
USB-seriell-Wandler . . . . . . . . . . . . . . 1203
USB-Webcams . . . . . . . . . . . . . . . . . . . . . 885
use . . . . . . . . . . . . . . . . . . . . . . 207, 210, 336
use vars . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
User-Id . . . . . . . . . . . . . . . . . . . . . . . . . . . 963
User-Interaktion . . . . . . . . . . . . . . . . . . . 435
1231
1232
Index
UserAgent . . . . . . . . . . . . . . . . . . . . . . . . . 847
Username . . . . . . . . . . . . . . . . . . . . . . . . . 849
Username (DBI) . . . . . . . . . . . . . . . . . . . . 768
UTF16 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
UTF8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312
utf8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
V
V.24 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1163
V.24-Pinbelegung . . . . . . . . . . . . . . . . . 1165
V.24-Signale . . . . . . . . . . . . . . . . . . . . . 1165
VARCHAR . . . . . . . . . . . . . . . . . . . . . . . . . 735
Variablen . . . . . . . . . . . . . . . . . . . . . . 33, 328
Varianz . . . . . . . . . . . . . . . . . . . . . . . . . . 1137
vars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Vektorformate . . . . . . . . . . . . . . . . . . . . . 521
Vererbung . . . . . . . . . . . . . . . . . . . . 381, 399
Vererbung, mehrfach . . . . . . . . . . . . . . 399
Vergleich . . . . . . . . . . . . . . . . . . . . . . . . . . 743
Vergleichsoperatoren . . . . . . . . . . . . . . . . 38
verkürzte Strukturen . . . . . . . . . . . . . . . . 66
Verzeichnis /proc/bus/usb . . . . . . . . . 1203
Verzeichnisse . . . . . . . . . . . . . . . . . . . . . . 128
Volltext-Datenbank . . . . . . . . . . . . . . . 1104
Volltextindex . . . . . . . . . . . . . . . . . . . . . 1101
vordefinierte Hashes . . . . . . . . . . . . . . . . 58
vordefinierte Listen . . . . . . . . . . . . . . . . . 58
Vordefinierte Skalare . . . . . . . . . . . . . . . . 46
vordefinierte Skalare . . . . . . . . . . . . . . . . 35
W
wait . . . . . . . . . . . . . . . . . . . . . . . . . . 279, 280
waitpid . . . . . . . . . . . . . . . . . . . . . . . . . . . 280
Wake-On-LAN . . . . . . . . . . . . . . . . . . . . . 876
Wall, Larry . . . . . . . . . . . . . . . . . . . . . . . . . 27
wantarray . . . . . . . . . . . . . . . . . . . . . . . . . . 79
warn . . . . . . . . . . . . . . . . . . . . . . . . . 105, 211
warnings . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Web-Bug . . . . . . . . . . . . . . . . . . . . . . . . . 1006
Webcam . . . . . . . . . . . . . . . . 885, 890, 1006
Webclients . . . . . . . . . . . . . . . . . . . . . . . . 845
Webmaster-Mail . . . . . . . . . . . . . . . . . . 1008
Webseiten lokal . . . . . . . . . . . . . . . . . . 1079
Webserver . . . . . . . . . . . . . . . . . . . . . . . . . 826
Webserver-Log . . . . . . . . . . . . . . . . . . . 1077
Weihnachtsbaum . . . . . . . . . . . . . . . . . . . 83
Weltkoordinaten . . . . . . . . . . . . . . . . . . . 560
while-Anweisung . . . . . . . . . . . . . . . . . . . 63
Widget . . . . . . . . . . . . . . . . . . . . . . . . . . . . 618
Widget-Optionen . . . . . . . . . . . . . . . . . . 622
Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . 647
Wiki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1020
Win32::SerialPort . . . . . . . . . . . . . . . . . 1168
Window Gadgets . . . . . . . . . . . . . . . . . . 618
Winkelfunktionen . . . . . . . . . . . . . . . . 1131
Wochentagsberechnung . . . . . . . . 78, 421
WOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 876
World Wide Web . . . . . . . . . . . . . . . . . . 951
Wortliste . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Wortscanner . . . . . . . . . . . . . . . . . . . . . 1094
Wrapper . . . . . . . . . . . . . . . . . . . . . . . . . 1155
write . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
WWW-Browser . . . . . . . . . . . . . . . . . . . . 953
WWW-Server . . . . . . . . . . . . . . . . . . . . . 953
X
X11 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . 651
Z
Zeichenketten-Funktionen . . . . . . . . . . . 81
Zeichenkettenmuster . . . . . . . . . . . . . . . 214
Zeichenkettenoperationen . . . . . . . . . . 754
Zeichenklassen . . . . . . . . . . . 220, 222, 315
Zeichensätze . . . . . . . . . . . . . . . . . . . . . . . 311
Zeitfunktionen . . . . . . . . . . . . . . . . . . . . 755
Zeitspannen . . . . . . . . . . . . . . . . . . . . . . . 415
Zombie . . . . . . . . . . . . . . . . . . . . . . . 820, 830
Zufallspasswörter . . . . . . . . . . . . . . . . . . 250
Zufallszahlen . . . . . . . . . . . . . . . . . . . . . . . 44
Zugriffsrechte . . . . . . . . . . . . . . . . . . . . . 958
zustandsloses Protokoll . . . . . . 954, 1050
Zuweisungen . . . . . . . . . . . . . . . . . . . . . . . 37
Zweite Normalform . . . . . . . . . . . . . . . . 716
IM INTERNET // Auf www.netzmafia.de/buecher/Perl/ finden Sie jede Menge nützliche
Zusatzdokumente und Informationen: Ergänzende Kapitel zu den Themen Algorithmen
und Datenstrukturen und Soundbearbeitung mit Perl // Referenz aller Perl-Funktionen //
Den Source-Code der Beispiele // Linkliste zu Perl // Perl-Kurzreferenz // Und vieles,
vieles mehr …
IM INTERNET // Auf www.netzmafia.de/buecher/Perl/ finden Sie jede Menge nützliche
R PERL-PROGRAMMIERER // Dieses Programmierhandbuch begleitet Sie von den
Prof.
ern Schritten
Jürgen PLATE
mit Perl
unterrichtet
bis hin zu an
Spezialthemen
der Fakultät Elektrotechnik
und der professionellen
und Informationstechnik
Anwendung
der Hochschule
von Perl in München.
der täglichen
Seine
Arbeit.
Fachgebiete
Egal, obumfassen
Sie es alsneben
Einführung
anderen
in die
eine
Program
neue Sprache
mierung,
oder
Computernetze,
als Nachschlagewerk
Internet und
nutzen,
die Administration
hier finden Sievon
Hilfe.
Linux-Servern.
Denn das
Seit
steckt
vielen,
alles vielen
drin: Jahre ist er begeisterter Perl-User.
In Teil 1 geht's los mit einem fundierten Einstieg in die Grundlagen und Konzepte
www.hanser.de/computer
ISBN 978-3-446-41688-8
Perl-Programmierer, Einsteiger bis Profis
9
783446 416888
Systemvoraussetzungen für eBook-inside: Internet-Verbindung und eBookreader Adobe Digital Editions.
ALLES ÜBER PERL – UND NOCH VIEL MEHR //
ALLES ÜBER
■ Ein Praxisbuch für alle Ansprüche – mehr brauchen EinsteigerPERL
und Profis
– UND
nicht
■ Perl von A bis Z: von den Grundlagen über Packages, ModuleNOCH
und Objekte
VIEL bis
zu erweiterten Perl-Techniken steckt hier alles drin.
MEHR //
■ Bietet jede Menge praktische Anregungen und Lösungen, die ■
SieEin
für Praxisbuch
Ihre Arbeit
verwenden können.
für alle Ansprüche
– mehr brauchen
Einsteiger und
Profis nicht
■ Perl von A bis
Z: von den
Grundlagen
DER PERL-PROGRAMMIERER // Dieses Programmierhandbuch begleitet
über Sie von
den ersten Schritten mit Perl bis hin zu Spezialthemen und der professionellen
Packages, Anwendung von Perl in der täglichen Arbeit. Egal, ob Sie es als Einführung
Module
in eineund
neue
Sprache oder als Nachschlagewerk nutzen, hier finden Sie Hilfe. Denn
Objekte
das steckt
bis zu
alles drin:
erweiterten
In Teil 1 geht's los mit einem fundierten Einstieg in die Grundlagen und
Perl-Techniken
Konzepte
von Perl einschließlich regulärer Ausdrücke, Systemschnittstelle, Debugging
steckt hier
und
Dokumentation.
alles drin.
Teil 2 beschäftigt sich mit der Strukturierung von komplexeren Programmierauf
■ Bietet jede gaben mithilfe von Packages und Modulen, um darauf aufbauend dieMenge
objektorienpraktitierte Programmierung mit Perl zu behandeln.
sche
Teil 3 verschafft Ihnen Einblick in Spezialthemen und praktische Methoden
Anregungen
wie z.B.
die Berechnung von Datum und Uhrzeit, Grafik und Bildbearbeitung, Benutzerober
und Lösungen,
flächen und Datenbankanbindung, Entwicklung von Web-Anwendungen
die Sieund
für die
Ihre
Netzwerk-Programmierung, Codegenerierung, Anbindung von LaTeX,
Arbeit
automativerwensches Erzeugen von PDF-Dokumenten und Excel-Dateien, Hardwareansteuerung
den können.
und vieles mehr.
Der Einsatzbereich von Perl ist nahezu unbegrenzt. Entdecken Sie in diesem Handbuch die Perl-Welt. Erfahren Sie, wie Sie sich die Sprache zunutze machen und
professionell einsetzen können.
Zugehörige Unterlagen
Herunterladen