Jürgen Plate
Der Perl Programmierer
Perl lernen - Professionell anwenden - Lösungen nutzen
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
© 2009-2024 ciando GmbH