|
Inhalt |
6 |
|
|
Vorwort |
22 |
|
|
Teil I: Grundlagen |
26 |
|
|
1 Programmierung mit Perl |
28 |
|
|
1.1 Erste Schritte |
28 |
|
|
1.1.1 Ein Programm ausführen |
31 |
|
|
1.1.2 Aufruf |
32 |
|
|
1.1.3 Dokumentation |
33 |
|
|
1.2 Sprachkontext |
33 |
|
|
1.3 Variablen |
34 |
|
|
1.3.1 Datentypen des Perl-Interpreters |
34 |
|
|
1.3.2 Skalare Variablen |
35 |
|
|
1.3.2 Vordefinierte Skalare |
36 |
|
|
1.4 Operationen und Zuweisungen |
38 |
|
|
1.4.1 Vergleichsoperatoren |
39 |
|
|
1.4.2 Logische Operatoren und Bitmaipulation |
40 |
|
|
1.4.3 Operatorenrangfolge |
43 |
|
|
1.4.4 Zufallszahlen |
45 |
|
|
1.4.5 Vordefinierte Skalarvariablen |
47 |
|
|
1.4.6 Pragmas des Perl-Interpreters |
48 |
|
|
1.5 Listen und Arrays |
49 |
|
|
1.5.1 Unterschiede und Gemeinsamkeiten von Listen und Arrays |
50 |
|
|
1.5.2 Array-Funktionen von Perl |
54 |
|
|
1.6 Hashes |
55 |
|
|
1.7 Kontrollstrukturen |
61 |
|
|
1.7.1 Bedingte Anweisungen |
62 |
|
|
1.7.2 Schleifenkonstrukte |
64 |
|
|
1.7.3 Sprungbefehle |
66 |
|
|
1.7.4 Verkürzte Strukturen |
67 |
|
|
1.7.5 do-Blöcke |
68 |
|
|
1.7.6 Switch-Struktur |
68 |
|
|
1.7.7 goto-Anweisung |
70 |
|
|
1.8 Unterprogramme |
70 |
|
|
1.8.1 Parameterübergabe |
72 |
|
|
1.8.2 Klammern oder keine Klammern? |
76 |
|
|
1.8.2 Lebensdauer von Objekten |
78 |
|
|
1.8.4 Default-Parameter |
81 |
|
|
1.8.5 Vordefinierte Funktionen für Zeichenketten |
82 |
|
|
1.8.6 Die Sortierfunktion |
85 |
|
|
1.8.7 Vordefinierte Mathematikfunktionen |
88 |
|
|
1.8.8 Ausführen von Systemkommandos |
90 |
|
|
1.8.9 Die eval-Funktion |
92 |
|
|
1.8.10 Funktionen für Datum und Uhrzeit |
93 |
|
|
1.8.11 Aufrufkontext ermitteln |
95 |
|
|
1.9 Besondere Unterprogramme: Blöcke |
96 |
|
|
1.10 Rekursion und Iteration |
98 |
|
|
1.11 Dateien |
103 |
|
|
1.11.1 Dateien öffnen |
104 |
|
|
1.11.2 Dateien schließen |
106 |
|
|
1.11.3 Lesender Zugriff |
107 |
|
|
1.11.4 Schreibender Zugriff |
109 |
|
|
1.11.5 Ein- und Ausgabe mit Pipes |
111 |
|
|
1.11.6 Dateien zum Lesen und Schreiben öffnen |
112 |
|
|
1.11.7 Sperren des Dateizugriffes für andere Benutzer |
114 |
|
|
1.11.8 Dateifunktionen |
114 |
|
|
1.11.9 Dateitestoperatoren und Dateiinformationen |
116 |
|
|
1.11.10 Das DATA-Filehandle |
117 |
|
|
1.11.11 Besonderheiten der Konsole |
118 |
|
|
1.11.12 Binäre Daten und Dateien |
119 |
|
|
1.11.13 Formatierte Ausgabe |
120 |
|
|
1.12 Verzeichnisse |
129 |
|
|
1.13 Referenzen |
132 |
|
|
1.13.1 Referenzen auf Variablen |
133 |
|
|
1.13.2 Referenzen als Funktionsparameter und -rückgaben |
140 |
|
|
1.13.3 Referenzen auf Funktionen |
145 |
|
|
1.13.4 Referenzen auf Filehandles |
146 |
|
|
1.13.5 Speicher und Speicherbereinigung |
148 |
|
|
1.13.6 Autovivikation |
149 |
|
|
1.14 Kommandozeilenparameter |
149 |
|
|
1.14.1 Das Parameter-Array @ARGV |
150 |
|
|
1.14.2 Kommandozeilen-Schalter |
151 |
|
|
1.14.3 Die Funktion getopts() |
151 |
|
|
1.14.4 Die Funktion getopt() |
153 |
|
|
1.15 Ausblick auf Perl 6 |
153 |
|
|
1.15.1 Neuigkeiten bei Perl 6 |
154 |
|
|
1.15.2 Neue Sprachkonstrukte |
155 |
|
|
1.15.3 Links |
157 |
|
|
2 Fehlersuche in Programmen |
158 |
|
|
2.1 Fehler suchen |
158 |
|
|
2.2 Der Perl-Debugger |
161 |
|
|
3 Stil und Dokumentation |
168 |
|
|
3.1 Stilvorschläge für Perl-Programme |
169 |
|
|
3.1.1 Allgemeines |
169 |
|
|
3.1.2 Namen |
170 |
|
|
3.1.3 Ausdrücke |
170 |
|
|
3.1.4 Programmformat |
171 |
|
|
3.2 Dokumentation |
173 |
|
|
3.2.1 Allgemeines |
173 |
|
|
3.2.2 POD-Überschriften |
174 |
|
|
3.2.3 Listeneinträge |
174 |
|
|
3.2.4 Texthervorhebungen |
175 |
|
|
3.2.5 Spezielle Ausgabeformate |
175 |
|
|
3.2.6 Erstellen einer Manual-Seite (Manpage) |
177 |
|
|
4 Komplexe Datenstrukturen |
178 |
|
|
4.1 Anonyme Strukturen |
179 |
|
|
4.2 Mehrdimensionale Arrays |
183 |
|
|
4.3 Array von Hashes |
187 |
|
|
4.4 Hash von Arrays |
192 |
|
|
4.5 Hash von Hashes |
194 |
|
|
4.6 Komplexe Datenstrukturen |
196 |
|
|
4.7 Ausgabe mit Data::Dumper |
200 |
|
|
4.8 Strukturen Kopieren und Speichern mit Storable |
203 |
|
|
4.9 Hash-Slices |
205 |
|
|
5 Externen Code ausführen |
208 |
|
|
5.1 Externen Code mittels do() ausführen |
209 |
|
|
5.2 Externen Code mit require() einbinden |
210 |
|
|
5.3 Externen Code mit use() einbinden |
211 |
|
|
6 Reguläre Ausdrücke |
214 |
|
|
6.1 Die Basis |
215 |
|
|
6.2 Operatoren für reguläre Ausdrücke |
216 |
|
|
6.3 Der Transliterationsoperator tr |
219 |
|
|
6.4 Anker und Zeichenklassen |
221 |
|
|
6.5 Quantifizierer |
226 |
|
|
6.6 Klammern und Rückbezüge |
229 |
|
|
6.7 Modifizierer |
231 |
|
|
6.8 Beliebige Begrenzer |
235 |
|
|
6.9 Perl-Besonderheiten |
238 |
|
|
6.10 Regex-Helfer |
239 |
|
|
7 Arrays, grep, map etc. |
242 |
|
|
7.1 Listen durchsuchen mit grep |
243 |
|
|
7.2 Listen modifizieren mit map |
245 |
|
|
7.3 map und sort |
251 |
|
|
7.4 Arrays manipulieren mit splice |
253 |
|
|
7.4.1 Array-Elemente entfernen |
253 |
|
|
7.4.2 Array-Elemente ersetzen |
254 |
|
|
7.4.3 Array-Elemente hinzufügen |
254 |
|
|
7.5 Array-Slices |
255 |
|
|
7.6 Das Modul List::Util |
257 |
|
|
8 Programmkonfiguration |
260 |
|
|
8.1 Konfiguration als Perl-Code |
261 |
|
|
8.2 Konfigurationsdatei mit Key-Value-Paaren |
262 |
|
|
9 Systeminformationen |
268 |
|
|
9.1 Systemspezifische Variablen |
269 |
|
|
9.2 Ausführen von Systemkommandos |
270 |
|
|
9.3 Systemfunktionen |
271 |
|
|
9.3.1 Die Funktionen setpwent, getpwent und endpwent |
273 |
|
|
9.3.2 Die Funktionen setgrent, getgrent und endgrent |
274 |
|
|
9.3.2 Die Funktionen getlogin, getpwuid und getpwnam |
274 |
|
|
9.3.4 Die Funktionen getgrgid und getgrnam |
275 |
|
|
9.3.5 Die Funktionen getpriority und setpriority |
276 |
|
|
9.3.6 Die Funktion getppid |
277 |
|
|
10 Prozesse und Signale |
278 |
|
|
10.1 Prozesse |
279 |
|
|
10.2 fork(), wait(), waitpid() und kill() |
281 |
|
|
10.3 Signale |
286 |
|
|
10.3.1 kill(SIG, Prozess) |
287 |
|
|
10.3.2 Signalhandler |
288 |
|
|
10.3.2 Die Alarm-Funktion |
292 |
|
|
10.4 Prozesskommunikation |
294 |
|
|
10.4.1 Pipes |
294 |
|
|
10.4.2 Named Pipes |
297 |
|
|
10.4.3 Prozesskommunikation mit open() |
299 |
|
|
10.4.4 System-V-IPC |
300 |
|
|
10.4.5 Einen Dämon erzeugen |
303 |
|
|
10.4.6 Benutzer- und Gruppen-ID ändern |
307 |
|
|
11 Internationalisierung |
310 |
|
|
11.1 Die locale-Kategorien |
311 |
|
|
11.2 Zeichensätze und Codierung |
312 |
|
|
11.3 locale und Programmierung |
314 |
|
|
11.3.1 Konfiguration ändern und ausgeben |
314 |
|
|
11.3.2 Funktionen für Zeichen |
316 |
|
|
11.3.3 ISO 3166: Norm zur Länder-Codierung |
317 |
|
|
11.3.4 ISO 4217: Norm für Währungsabkürzungen |
318 |
|
|
Teil II: Packages, Module und Objekte |
320 |
|
|
12 Packages |
322 |
|
|
12.1 Namenskonflikte mit Packages auflösen |
323 |
|
|
12.2 Lexikalische Gültigkeitsbereiche |
326 |
|
|
12.3 Lokale Gültigkeitsbereiche |
327 |
|
|
12.4 Globale Variablen |
329 |
|
|
12.5 Typeglobs |
330 |
|
|
13 Module |
334 |
|
|
13.1 Perl-Module nutzen |
336 |
|
|
13.1.1 Module finden |
338 |
|
|
13.1.2 CPAN-Module installieren |
340 |
|
|
13.2 Eigene Module bauen |
342 |
|
|
13.3 Standardmodule |
347 |
|
|
13.4 Pragmas des Perl-Interpreters |
356 |
|
|
13.5 Modultests automatisieren |
358 |
|
|
13.5.1 Dokumentation testen |
360 |
|
|
13.5.2 Modultest |
360 |
|
|
13.5.3 Test::Simple |
361 |
|
|
13.5.4 Test::More |
363 |
|
|
13.6 Ein eigenes Modul erstellen |
369 |
|
|
13.6.1 Die Datei Makefile.PL |
370 |
|
|
13.6.2 Die Datei README |
371 |
|
|
13.6.3 Die Datei Changes |
372 |
|
|
13.6.4 Die Datei MANIFEST |
372 |
|
|
13.6.5 Testprogramme |
373 |
|
|
13.6.6 Das Modul selbst |
373 |
|
|
13.6.7 Das Modul testen |
376 |
|
|
13.6.8 Das Modul packen |
377 |
|
|
14 Objektorientiertes Perl |
378 |
|
|
14.1 Grundlagen der OOP |
379 |
|
|
14.1.1 Objekte und Klassen |
379 |
|
|
14.1.2 Kapselung (Encapsulation) |
381 |
|
|
14.1.3 Vererbung (Inheritance) |
382 |
|
|
14.1.4 Polymorphie (Polymorphism) |
383 |
|
|
14.2 Klassen, Objekte und Methoden |
384 |
|
|
14.2.1 Perl-OOP |
386 |
|
|
14.2.2 Zugriff auf Methoden |
388 |
|
|
14.2.3 Parameter des Konstruktors |
390 |
|
|
14.2.4 Accessors |
395 |
|
|
14.3 Vererbung |
400 |
|
|
Teil III: Perl im Einsatz |
412 |
|
|
15 Datum und Uhrzeit |
414 |
|
|
15.1 Julianischer Tag |
417 |
|
|
15.2 Osterdatum und bewegliche Feste |
423 |
|
|
15.3 Das Modul Date::Calc |
425 |
|
|
16 User-Interaktion |
436 |
|
|
16.1 Erweiterte Kommandozeilenoptionen |
437 |
|
|
16.2 Einfache Interaktion mit dem Benutzer |
441 |
|
|
16.2.1 IO::Interactive |
442 |
|
|
16.2.2 Term::Readkey |
443 |
|
|
16.2.3 IO::Prompt |
446 |
|
|
16.3 Textbildschirm mit Curses |
451 |
|
|
16.3.1 Dokumentation |
451 |
|
|
17 Textmanipulation |
462 |
|
|
17.1 Programmierwerkzeuge |
463 |
|
|
17.1.1 Crossreferenz |
463 |
|
|
17.1.2 Hexdump |
465 |
|
|
17.1.3 Dateinamen heilen |
467 |
|
|
17.1.4 Passwort-Generator |
469 |
|
|
17.1.5 Doubletten finden |
471 |
|
|
17.2 Textersetzung in Dateien |
473 |
|
|
17.2.1 Schnipp-Schnapp |
473 |
|
|
17.2.2 Mehrfachersetzungen in einer Datei |
474 |
|
|
17.3 Texte bearbeiten und konvertieren |
476 |
|
|
17.3.1 Buchstabieren leicht gemacht |
476 |
|
|
17.3.2 Silbentrennung |
477 |
|
|
17.3.3 Stemmer |
482 |
|
|
17.3.4 Das Soundex-Verfahren |
487 |
|
|
17.3.5 Rhabarber, Rhabarber |
488 |
|
|
17.3.6 Lorem ipsum |
489 |
|
|
17.4 Verarbeitung von CSV- und Excel-Dateien |
491 |
|
|
17.4.1 CSV-Dateien parsen |
492 |
|
|
17.4.2 Excel-Dateien lesen |
495 |
|
|
17.4.3 Excel-Dateien erzeugen |
496 |
|
|
17.5 PDF-Dateien erzeugen |
502 |
|
|
17.6 Makros und Templates |
507 |
|
|
17.6.1 Ein Makroprozessor |
507 |
|
|
17.6.2 Text-Templates (Schablonen) |
511 |
|
|
18 Grafik mit Perl |
520 |
|
|
18.1 Grafik-Grundlagen |
521 |
|
|
18.1.1 Einteilung nach Bildformat/Speicherung |
521 |
|
|
18.1.2 Einteilung nach Farbe und Farbtiefe |
522 |
|
|
18.1.3 Farbensehen beim Menschen |
523 |
|
|
18.1.4 Farbmodelle |
525 |
|
|
18.1.5 Das RGB-Modell |
526 |
|
|
18.1.6 Das CMY-Modell |
526 |
|
|
18.1.7 Gammakorrektur |
527 |
|
|
18.1.8 Dithering |
528 |
|
|
18.1.9 Bildkompressionsverfahren |
529 |
|
|
18.1.10 Grafikformate |
530 |
|
|
18.2 Grafiken erzeugen mit dem GD-Modul |
532 |
|
|
18.2.1 Erzeugen und Speichern von Images |
535 |
|
|
18.2.2 Farben zuordnen |
536 |
|
|
18.2.3 Grundfunktionen zum Zeichnen |
539 |
|
|
18.2.4 Text im Bild ausgeben |
545 |
|
|
18.2.5 Polygone zeichnen |
547 |
|
|
18.2.6 Flächen füllen |
553 |
|
|
18.2.7 Spezielle Farbmuster |
554 |
|
|
18.2.6 Bilder oder Bildausschnitte kopieren |
556 |
|
|
18.3 Koordinatensysteme |
561 |
|
|
18.4 Informationen über Bilder |
565 |
|
|
18.4.1 Bildgröße ermitteln |
565 |
|
|
18.4.2 Bilddaten |
566 |
|
|
18.4.3 Screenshots anfertigen |
567 |
|
|
18.5 Das Chart-Paket |
568 |
|
|
18.6 Das Modul GraphViz |
572 |
|
|
18.6.1 Installation |
572 |
|
|
18.6.2 Attribute von new() |
574 |
|
|
18.6.3 Attribute für Knoten und Kanten |
576 |
|
|
18.6.4 GraphViz-Tools |
583 |
|
|
18.7 Strichcode mit GD erzeugen |
584 |
|
|
18.8 Bildbearbeitung mit PerlMagick |
587 |
|
|
18.8.1 Die ImageMagick-Programme |
587 |
|
|
18.8.2 PerlMagick = Image::Magick |
594 |
|
|
19 Die TK-Benutzerschnittstelle |
618 |
|
|
19.1 Ereignisgesteuerte Programme |
619 |
|
|
19.2 Einführung in Perl/Tk |
620 |
|
|
19.3 Widget-Optionen |
623 |
|
|
Geometriemanager |
629 |
|
|
Der Geometriemanager grid |
629 |
|
|
Der Geometriemanager place |
634 |
|
|
Der Geometriemanager pack |
638 |
|
|
Frame- und Toplevel-Widgets |
643 |
|
|
Das Widget frame |
644 |
|
|
Das Toplevel-Widget |
646 |
|
|
Die Perl/Tk-Widgets |
647 |
|
|
Das Button-Widget |
648 |
|
|
Das Label-Widget |
650 |
|
|
Exkurs: Schriftarten (Fonts) bei X11 |
652 |
|
|
Das Entry-Widget |
656 |
|
|
Das Messagebox-Widget |
658 |
|
|
Das Dialog-Widget |
660 |
|
|
Das Checkbutton-Widget |
663 |
|
|
Das Radiobutton-Widget |
664 |
|
|
Das Listbox-Widget |
667 |
|
|
Die Widgets Scrollbar, Scrolled und Scale |
670 |
|
|
Grafik mit dem Canvas-Widget |
677 |
|
|
Das Text-Widget |
684 |
|
|
Menüs erzeugen mit Menu und Menubutton |
688 |
|
|
Das Notebook-Widget |
693 |
|
|
Ein Fortschrittsbalken-Widget |
695 |
|
|
Maus und Tasten an Aktionen/Widgets binden |
699 |
|
|
20 MySQL-Datenbanken |
710 |
|
|
20.1 Einführung in Datenbanken |
711 |
|
|
20.1.1 Datenbankentwurf |
715 |
|
|
20.1.2 Elementare Datentypen |
721 |
|
|
20.1.3 Relationale Operationen |
722 |
|
|
20.2 Die Sprache SQL |
726 |
|
|
20.3 MySQL |
730 |
|
|
20.3.1 Installation und Inbetriebnahme |
730 |
|
|
20.3.2 MySQL-Datentypen |
734 |
|
|
20.3.3 Datenbankabfrage mit SELECT |
740 |
|
|
20.3.4 Joins – Abfragen mit SELECT |
748 |
|
|
20.3.5 Zeichenkettenoperationen |
755 |
|
|
20.3.6 Datums- und Zeitfunktionen |
756 |
|
|
20.3.7 Bedingte Anweisungen |
757 |
|
|
20.3.8 Tabellen importieren oder clonen |
757 |
|
|
20.3.9 Datensätze ändern oder löschen |
760 |
|
|
20.3.10 Felder einer Tabelle ändern |
761 |
|
|
20.3.11 Datenbank sichern |
763 |
|
|
20.4 Die Perl-DBI-Schnittstelle |
764 |
|
|
20.4.1 Verbindung zur Datenbank öffnen |
765 |
|
|
20.4.2 Allgemeine Funktionen |
768 |
|
|
20.4.3 Übergabe von User, Passwort und Datenbank |
769 |
|
|
20.4.4 Metadaten zur Datenbank ermitteln |
770 |
|
|
20.4.5 MySQL-Tabellen anlegen |
772 |
|
|
20.4.6 Zugriff auf die Datensätze |
773 |
|
|
20.4.7 MySQL-Spezialfunktionen und Fehlerbehandlung |
782 |
|
|
20.4.8 Bilder abspeichern und anzeigen |
784 |
|
|
20.4.9 Anwendungsbeispiel: IP-Adresse dem Land zuordnen |
786 |
|
|
20.4.10 SQL-Injection |
791 |
|
|
21 Netzwerkprogrammierung |
794 |
|
|
21.1 Socketprogrammierung |
795 |
|
|
21.1.1 Die Socket-Netzwerkschnittstelle |
795 |
|
|
21.1.2 Die Socket-Funktionen des Betriebssystems |
800 |
|
|
21.1.3 Der erste Perl-Server und -Client |
804 |
|
|
21.2 Netzwerkfunktionen in Perl |
806 |
|
|
21.2.1 IP-Adressen |
806 |
|
|
21.2.2 Informationsfunktionen |
807 |
|
|
21.3 Die Socket-Schnittstelle IO::Socket::INET |
813 |
|
|
21.3.1 Der Konstruktor new |
813 |
|
|
21.3.2 Aktive Methoden |
814 |
|
|
21.3.3 Informationsmethoden |
815 |
|
|
21.3.4 Gepufferte Ein- und Ausgabe |
816 |
|
|
21.4 Namensauflösung |
816 |
|
|
21.5 Server und Client in Perl |
818 |
|
|
21.6 Forking Server in Perl |
821 |
|
|
21.7 Server für bestimmte Dienste |
824 |
|
|
21.7.1 Sprüche-Server |
825 |
|
|
21.7.2 Keks-Server |
826 |
|
|
21.7.3 Server für HTTP |
827 |
|
|
21.7.4 Preforking |
839 |
|
|
21.7.5 Serverdienste über inetd |
840 |
|
|
21.7.6 Protokollierung |
842 |
|
|
21.7.7 Timeouts abfangen |
844 |
|
|
21.8 Perl-Clients für Standarddienste |
844 |
|
|
21.8.1 Client für Binärdaten |
844 |
|
|
21.8.2 Webclients |
846 |
|
|
21.8.3 FTP-Clients |
860 |
|
|
21.9 Portscanner |
863 |
|
|
21.10 Ping |
864 |
|
|
21.11 Rechner im Netz suchen |
867 |
|
|
21.12 Spezielle Netzwerkanwendungen |
870 |
|
|
21.2.1 Aktienkurse auslesen |
870 |
|
|
21.12.2 Comics herunterladen |
873 |
|
|
21.12.3 Wake-On-LAN |
877 |
|
|
21.12.4 Ein Protokoll entwerfen |
880 |
|
|
21.12.5 Webcams auslesen |
886 |
|
|
21.12.6 Steuern über das Netz |
891 |
|
|
22 E-Mail |
902 |
|
|
22.1 E-Mail-Grundlagen |
903 |
|
|
22.1.1 Ein Blick auf den Briefkopf |
904 |
|
|
22.1.2 Mailing-Listen |
905 |
|
|
22.1.3 Was ist MIME? |
906 |
|
|
22.1.4 POP -- Post Office Protocol |
908 |
|
|
22.1.5 IMAP -- Internet Message Access Protocol |
911 |
|
|
22.1.6 Der Mail Transport Agent |
912 |
|
|
22.2 E-Mail versenden mit Perl |
915 |
|
|
22.2.1 Mailversand mit Sendmail |
915 |
|
|
22.2.2 Mailversand mit Netzwerkfunktionen |
916 |
|
|
22.2.3 Mailversand mit Net::SMTP |
918 |
|
|
22.2.4 Ein Mini-MTA |
921 |
|
|
22.3 E-Mail mit Attachmentversenden |
922 |
|
|
22.4 MIME-Mails verarbeiten |
928 |
|
|
22.4.1 Das Modul MIME::Parser |
928 |
|
|
22.4.2 Der Mail-Analysator |
936 |
|
|
22.4.3 Die Dateien aliases und .forward |
940 |
|
|
22.5 E-Mail vom Mailserver holen |
942 |
|
|
22.5.1 E-Mail per POP3 holen |
942 |
|
|
22.5.2 E-Mail per IMAP holen |
945 |
|
|
23 CGI und HTML |
952 |
|
|
23.1 Das Hypertext Transfer Protocol |
954 |
|
|
23.1.1 Struktur der HTTP-Botschaften |
955 |
|
|
23.1.2 Antwortcodes eines WWW-Servers |
957 |
|
|
23.2 Common Gateway Interface (CGI) |
958 |
|
|
23.2.1 Daten empfangen |
960 |
|
|
23.2.2 Dem Browser eine Antwort geben |
962 |
|
|
23.2.3 Sicherheit und CGI-Programme |
964 |
|
|
23.2.4 Wenn das CGI-Programm nicht läuft |
969 |
|
|
23.2.5 HTML-Formulare |
970 |
|
|
23.2.6 CGI-Programme und die Webseite |
977 |
|
|
23.3 CGI-Programmierung |
980 |
|
|
23.3.1 Ablauf eines CGI-Programms |
980 |
|
|
23.3.2 Decodierung der übergebenen Daten |
981 |
|
|
23.3.3 Fehlerbehandlung im Browser |
992 |
|
|
23.3.4 Ein Blick auf den HTTP-Header |
994 |
|
|
23.3.5 Formulare generieren |
996 |
|
|
23.3.6 Binärinformation zurückgeben |
1002 |
|
|
23.3.7 Einige einfache Anwendungen |
1008 |
|
|
23.4 Das CGI-Modul |
1026 |
|
|
23.4.1 Erzeugung eines neuen CGI-Query-Objekts |
1030 |
|
|
23.4.2 Formularparameter bearbeiten |
1031 |
|
|
23.4.3 CGI-Modul und HTTP-Header |
1033 |
|
|
23.4.4 HTML-Header und -Footer |
1036 |
|
|
23.4.5 Erzeugung von Formularen |
1037 |
|
|
23.4.6 Standard-HTML-Elemente erzeugen |
1043 |
|
|
23.4.7 Die funktionsorientierte Schnittstelle |
1044 |
|
|
23.4.8 Debugging-Tips |
1046 |
|
|
23.5 Datei-Upload per Formular |
1048 |
|
|
23.6 Session-Tracking |
1051 |
|
|
23.6.1 Zustandsspeicherung über PATH_INFO |
1053 |
|
|
23.6.2 Zustandsspeicherung per URL-Encoding |
1054 |
|
|
23.6.3 Zustandsspeicherung über Hidden-Felder |
1055 |
|
|
23.6.4 Zustandsspeicherung über Cookies |
1056 |
|
|
23.7 Datenbankzugriffe in CGI-Programmen |
1068 |
|
|
23.8 Captchas |
1071 |
|
|
23.9 Fehler im Webserver-Log suchen |
1078 |
|
|
23.10 Webseiten lokal zum Browser schicken |
1080 |
|
|
24 Suchen und Finden |
1082 |
|
|
24.1 Eine kleine lokale Suchmaschine |
1085 |
|
|
24.2 Dateien indizieren |
1090 |
|
|
24.2.1 Konfiguration des Indexers |
1092 |
|
|
24.2.2 Texte indizieren |
1095 |
|
|
24.2.3 Ein Volltextindex auf Dateibasis |
1102 |
|
|
24.2.4 Ein Volltextindex mit MySQL |
1105 |
|
|
24.3 Mit Swish-E Webseiten indizieren |
1111 |
|
|
24.4 Links überprüfen |
1120 |
|
|
25 Numerik und Statistik |
1124 |
|
|
25.1 Mathematikmodule |
1125 |
|
|
25.1.1 Große Ganzzahlen |
1125 |
|
|
25.1.2 Große Gleitkommazahlen |
1128 |
|
|
25.1.3 Komplexe Zahlen |
1130 |
|
|
25.1.4 Trigonometrische Funktionen |
1132 |
|
|
25.2 Deskriptive Statistik |
1137 |
|
|
25.2.1 Tabellarische und grafische Darstellung |
1137 |
|
|
25.2.2 Mittelwert, Varianz, Standardabweichung, Standardfehler |
1138 |
|
|
25.2.3 Minimum, Maximum, Median, Modalwert |
1140 |
|
|
25.2.4 Lineare Regression |
1142 |
|
|
25.3 Geometrie: Polygonumfang und -Fläche |
1144 |
|
|
25.4 Nullstellen von Gleichungen |
1146 |
|
|
25.5 Numerische Integration |
1151 |
|
|
25.6 Permutationen |
1153 |
|
|
26 Perl und die Hardware |
1154 |
|
|
26.1 You must be root … |
1155 |
|
|
26.2 Die parallele Schnittstelle |
1156 |
|
|
26.2.1 Parallele Grundlagen |
1157 |
|
|
26.2.2 Programmierung der parallelen Schnittstelle |
1160 |
|
|
26.3 Die serielle Schnittstelle |
1164 |
|
|
26.3.1 Serielle Grundlagen |
1164 |
|
|
26.3.2 Programmierung mit Perl |
1168 |
|
|
26.3.3 Steuer- und Statusleitungen, Meldungen, Einstellungen |
1175 |
|
|
26.3.4 Serielle Ein- und Ausgabe, Timeouts |
1182 |
|
|
26.3.5 Betrieb mit Modems etc. |
1189 |
|
|
26.3.6 Messwerterfassung über die serielle Schnittstelle |
1195 |
|
|
26.4 Die USB-Schnittstelle |
1203 |
|
|
26.4.1 Informationen über den USB einholen |
1204 |
|
|
26.4.2 USB über die libusb ansteuern |
1211 |
|
|
Literatur |
1218 |
|
|
Index |
1220 |
|