|
Inhalt |
6 |
|
|
Vorwort von Damian Conway |
12 |
|
|
Vorwort |
14 |
|
|
Die Struktur dieses Buches |
15 |
|
|
In diesem Buch benutzte Konventionen |
16 |
|
|
Die Beispiele in diesem Buch |
16 |
|
|
Danksagungen |
16 |
|
|
Kapitel 1 Einleitung |
20 |
|
|
Was sollten Sie bereits wissen? |
21 |
|
|
Warum so viele Fußnoten? |
21 |
|
|
Wozu die Übungen? |
22 |
|
|
Was ist zu beachten, wenn Sie einen Perl-Kurs leiten? |
22 |
|
|
Kapitel 2 Größere Programme schreiben |
24 |
|
|
Die Lösung für häufig benutzten Code |
24 |
|
|
Code einbinden mit eval |
25 |
|
|
Die Benutzung von do |
26 |
|
|
Die Benutzung von require |
28 |
|
|
require und @INC |
30 |
|
|
Probleme mit der Kollision von Namensräumen |
32 |
|
|
Packages zum Trennen von Namensräumen |
34 |
|
|
Der Geltungsbereich einer Package-Direktive |
35 |
|
|
Packages und lexikalische Variablen |
36 |
|
|
Übungen |
37 |
|
|
Kapitel 3 Einführung in Referenzen |
38 |
|
|
Dieselbe Aufgabe für mehrere Arrays ausführen |
38 |
|
|
Eine Referenz auf ein Array anlegen |
40 |
|
|
Eine Arrayreferenz dereferenzieren |
41 |
|
|
Die geschweiften Klammern weglassen |
43 |
|
|
Das Array modifizieren |
43 |
|
|
Verschachtelte Datenstrukturen |
44 |
|
|
Verschachtelte Referenzen auf Elemente mit der Pfeilnotation vereinfachen |
46 |
|
|
Referenzen auf Hashes |
48 |
|
|
Übungen |
50 |
|
|
Kapitel 4 Referenzen und Geltungsbereiche |
52 |
|
|
Mehr als eine Referenz auf Daten |
52 |
|
|
Wie war doch gleich der Name? |
53 |
|
|
Referenzzähler und verschachtelte Datenstrukturen |
54 |
|
|
Wenn der Referenzzähler nicht funktioniert |
56 |
|
|
Anonyme Arrays direkt anlegen |
58 |
|
|
Anonyme Hashes anlegen |
61 |
|
|
Automatisches Erzeugen von Variablen (Autovivification) |
63 |
|
|
Selbsterzeugung und Hashes |
65 |
|
|
Übungen |
67 |
|
|
Kapitel 5 Komplexe Datenstrukturen manipulieren |
70 |
|
|
Die Benutzung des Debuggers zum Betrachten komplexer Daten |
70 |
|
|
Komplexe Datenstrukturen mit Data::Dumper betrachten |
75 |
|
|
Komplexe Datenstrukturen mit Storable dauerhaft speichern |
77 |
|
|
Die Operatoren map und grep |
79 |
|
|
Die Verwendung von map |
81 |
|
|
Absichtliche Umwege |
82 |
|
|
Komplexe Daten auswählen und verändern |
84 |
|
|
Übungen |
85 |
|
|
Kapitel 6 Referenzen auf Subroutinen |
88 |
|
|
Eine Referenz auf eine benannte Subroutine anlegen |
88 |
|
|
Anonyme Subroutinen |
93 |
|
|
Callbacks |
95 |
|
|
Closures |
96 |
|
|
Zurückgeben einer Subroutine aus einer Subroutine |
97 |
|
|
Closure-Variablen als Eingaben |
101 |
|
|
Closure-Variablen als statische lokale Variablen |
101 |
|
|
Übung |
103 |
|
|
Kapitel 7 Praktische Tricks mit Referenzen |
106 |
|
|
Rückblick auf das Sortieren |
106 |
|
|
Sortierung mit Indizes |
107 |
|
|
Effizientes Sortieren |
109 |
|
|
Die Schwartzsche Transformation |
110 |
|
|
Rekursiv definierte Daten |
111 |
|
|
Rekursiv definierte Daten anlegen |
112 |
|
|
Rekursiv definierte Daten darstellen |
115 |
|
|
Übungen |
116 |
|
|
Kapitel 8 Objekte – eine Einführung |
118 |
|
|
Wenn wir mit den Tieren sprechen könnten… |
119 |
|
|
Die Pfeilnotation für Methodenaufrufe |
120 |
|
|
Zusätzliche Parameter für Methodenaufrufe |
121 |
|
|
Eine zweite Methode aufrufen, um die Dinge zu vereinfachen |
122 |
|
|
Anmerkungen zu @ISA |
123 |
|
|
Methoden überschreiben |
124 |
|
|
Die Suche von einem anderen Ort aus beginnen |
127 |
|
|
Eine SUPER Möglichkeit, die Dinge zu erledigen |
127 |
|
|
Die Verwendung von @_ |
128 |
|
|
Der Stand der Dinge |
128 |
|
|
Übungen |
129 |
|
|
Kapitel 9 Objekte mit Daten |
130 |
|
|
Ein Pferd ist immer ein Pferd – oder etwa nicht? |
130 |
|
|
Eine Instanzmethode aufrufen |
131 |
|
|
Auf Instanzdaten zugreifen |
132 |
|
|
Wie man ein Pferd erschafft |
133 |
|
|
Den Konstruktor vererben |
134 |
|
|
Methoden anlegen, die für Klassen und Instanzen gleichermaßen funktionieren |
134 |
|
|
Parameter an eine Methode übergeben |
135 |
|
|
Mehr interessante Instanzen |
136 |
|
|
Ein andersfarbiges Pferd |
137 |
|
|
Den Einsatz wieder herausbekommen |
138 |
|
|
Lassen Sie den Deckel zu |
139 |
|
|
Schnellere Getter und Setter |
140 |
|
|
Getter, die gleichzeitig Setter sind |
141 |
|
|
Eine Methode auf Klassen oder Instanzen beschränken |
141 |
|
|
Übung |
142 |
|
|
Kapitel 10 Destruktoren für Objekte |
144 |
|
|
Ein totes Pferd schlagen |
149 |
|
|
Indirekte Objektsyntax |
150 |
|
|
Unterklassen mit zusätzlichen Instanzvariablen |
152 |
|
|
Klassenvariablen benutzen |
154 |
|
|
Das Argument »abschwächen« |
155 |
|
|
Übung |
157 |
|
|
Kapitel 11 Fortgeschrittene Objekttechniken |
160 |
|
|
UNIVERSAL-Methoden |
160 |
|
|
Ihre Objekte auf gutes Benehmen überprüfen |
161 |
|
|
AUTOLOAD als letztes Mittel |
162 |
|
|
Die Verwendung von AUTOLOAD für Zugriffsmethoden |
164 |
|
|
Getter und Setter leichter anlegen |
165 |
|
|
Mehrfache Vererbung |
167 |
|
|
Referenzen auf Dateihandles |
167 |
|
|
Übung |
170 |
|
|
Kapitel 12 Module |
172 |
|
|
Beispiel für funktionsorientierte Schnittstellen: File:: Basename |
172 |
|
|
Auswählen, was importiert werden soll |
173 |
|
|
Beispiel für objektorientierte Schnittstellen: File::Spec |
174 |
|
|
Ein etwas typischeres objektorientiertes Modul: Math:: BigInt |
175 |
|
|
Der Unterschied zwischen OO- und Nicht-OO-Modulen |
175 |
|
|
Die Arbeitsweise von use |
175 |
|
|
Den Pfad zur richtigen Zeit setzen |
177 |
|
|
Importieren mit Exporter |
179 |
|
|
@EXPORT und @EXPORT_OK |
179 |
|
|
Exporte bei einem primär objektorientierten Modul |
181 |
|
|
Eigene Importroutinen |
183 |
|
|
Übung |
184 |
|
|
Kapitel 13 Das Erstellen einer Distribution |
186 |
|
|
Einführung in h2xs |
187 |
|
|
Die Schablonendateien unter der Lupe |
187 |
|
|
Der Modul-Prototyp |
190 |
|
|
Eingebettete Dokumentation |
192 |
|
|
Kontrolle der Distribution mit Makefile.PL |
196 |
|
|
Alternative Installationsorte (PREFIX=...) |
197 |
|
|
Einfaches make test |
198 |
|
|
Einfaches make install |
200 |
|
|
Einfaches make dist |
200 |
|
|
Einen anderen Speicherort für die Bibliothek verwenden |
201 |
|
|
Übung |
202 |
|
|
Kapitel 14 Wichtige Tests |
204 |
|
|
Die Arbeitsweise der Testumgebung |
206 |
|
|
Tests mit Test::Simple schreiben |
207 |
|
|
Tests schreiben mit Test::More |
209 |
|
|
Konditionale Tests |
213 |
|
|
Komplexere Tests (mehrere Test-Skripten) |
214 |
|
|
Dinge testen, die nach STDOUT oder nach STDERR schreiben |
214 |
|
|
Übung |
215 |
|
|
Kapitel 15 Ihr Beitrag zum CPAN |
216 |
|
|
Das Comprehensive Perl Archive Network |
216 |
|
|
Die nötigen Vorbereitungen |
217 |
|
|
Ihre Distribution vorbereiten |
218 |
|
|
Ihre Distribution hochladen |
219 |
|
|
Das Modul ankündigen |
219 |
|
|
Das Testen auf verschiedenen Plattformen |
220 |
|
|
Schreiben Sie einen Artikel oder halten Sie einen Vortrag |
220 |
|
|
Übung |
220 |
|
|
Antworten zu den Übungen |
222 |
|
|
Antworten für Kapitel 2 |
222 |
|
|
Antworten für Kapitel 3 |
223 |
|
|
Antworten für Kapitel 4 |
224 |
|
|
Antworten für Kapitel 5 |
227 |
|
|
Antwort für Kapitel 6 |
228 |
|
|
Antworten für Kapitel 7 |
229 |
|
|
Antworten für Kapitel 8 |
231 |
|
|
Antworten für Kapitel 9 |
234 |
|
|
Antworten für Kapitel 10 |
235 |
|
|
Antworten für Kapitel 11 |
236 |
|
|
Antworten für Kapitel 12 |
237 |
|
|
Antworten für die Kapitel 13– 15 |
238 |
|
|
Index |
240 |
|
|
Über die Autoren |
250 |
|
|
Über den Übersetzer |
250 |
|
|
Kolophon |
251 |
|