// 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.