
Der Perl-Programmierer
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
More details
Other editions
Additional editions

Person
Content
2 - Vorwort [Seite 22]
3 - Teil I: Grundlagen [Seite 26]
3.1 - 1 Programmierung mit Perl [Seite 28]
3.1.1 - 1.1 Erste Schritte [Seite 28]
3.1.1.1 - 1.1.1 Ein Programm ausführen [Seite 31]
3.1.1.2 - 1.1.2 Aufruf [Seite 32]
3.1.1.3 - 1.1.3 Dokumentation [Seite 33]
3.1.2 - 1.2 Sprachkontext [Seite 33]
3.1.3 - 1.3 Variablen [Seite 34]
3.1.3.1 - 1.3.1 Datentypen des Perl-Interpreters [Seite 34]
3.1.3.2 - 1.3.2 Skalare Variablen [Seite 35]
3.1.3.3 - 1.3.2 Vordefinierte Skalare [Seite 36]
3.1.4 - 1.4 Operationen und Zuweisungen [Seite 38]
3.1.4.1 - 1.4.1 Vergleichsoperatoren [Seite 39]
3.1.4.2 - 1.4.2 Logische Operatoren und Bitmaipulation [Seite 40]
3.1.4.3 - 1.4.3 Operatorenrangfolge [Seite 43]
3.1.4.4 - 1.4.4 Zufallszahlen [Seite 45]
3.1.4.5 - 1.4.5 Vordefinierte Skalarvariablen [Seite 47]
3.1.4.6 - 1.4.6 Pragmas des Perl-Interpreters [Seite 48]
3.1.5 - 1.5 Listen und Arrays [Seite 49]
3.1.5.1 - 1.5.1 Unterschiede und Gemeinsamkeiten von Listen und Arrays [Seite 50]
3.1.5.2 - 1.5.2 Array-Funktionen von Perl [Seite 54]
3.1.6 - 1.6 Hashes [Seite 55]
3.1.7 - 1.7 Kontrollstrukturen [Seite 61]
3.1.7.1 - 1.7.1 Bedingte Anweisungen [Seite 62]
3.1.7.2 - 1.7.2 Schleifenkonstrukte [Seite 64]
3.1.7.3 - 1.7.3 Sprungbefehle [Seite 66]
3.1.7.4 - 1.7.4 Verkürzte Strukturen [Seite 67]
3.1.7.5 - 1.7.5 do-Blöcke [Seite 68]
3.1.7.6 - 1.7.6 Switch-Struktur [Seite 68]
3.1.7.7 - 1.7.7 goto-Anweisung [Seite 70]
3.1.8 - 1.8 Unterprogramme [Seite 70]
3.1.8.1 - 1.8.1 Parameterübergabe [Seite 72]
3.1.8.2 - 1.8.2 Klammern oder keine Klammern? [Seite 76]
3.1.8.3 - 1.8.2 Lebensdauer von Objekten [Seite 78]
3.1.8.4 - 1.8.4 Default-Parameter [Seite 81]
3.1.8.5 - 1.8.5 Vordefinierte Funktionen für Zeichenketten [Seite 82]
3.1.8.6 - 1.8.6 Die Sortierfunktion [Seite 85]
3.1.8.7 - 1.8.7 Vordefinierte Mathematikfunktionen [Seite 88]
3.1.8.8 - 1.8.8 Ausführen von Systemkommandos [Seite 90]
3.1.8.9 - 1.8.9 Die eval-Funktion [Seite 92]
3.1.8.10 - 1.8.10 Funktionen für Datum und Uhrzeit [Seite 93]
3.1.8.11 - 1.8.11 Aufrufkontext ermitteln [Seite 95]
3.1.9 - 1.9 Besondere Unterprogramme: Blöcke [Seite 96]
3.1.10 - 1.10 Rekursion und Iteration [Seite 98]
3.1.11 - 1.11 Dateien [Seite 103]
3.1.11.1 - 1.11.1 Dateien öffnen [Seite 104]
3.1.11.2 - 1.11.2 Dateien schließen [Seite 106]
3.1.11.3 - 1.11.3 Lesender Zugriff [Seite 107]
3.1.11.4 - 1.11.4 Schreibender Zugriff [Seite 109]
3.1.11.5 - 1.11.5 Ein- und Ausgabe mit Pipes [Seite 111]
3.1.11.6 - 1.11.6 Dateien zum Lesen und Schreiben öffnen [Seite 112]
3.1.11.7 - 1.11.7 Sperren des Dateizugriffes für andere Benutzer [Seite 114]
3.1.11.8 - 1.11.8 Dateifunktionen [Seite 114]
3.1.11.9 - 1.11.9 Dateitestoperatoren und Dateiinformationen [Seite 116]
3.1.11.10 - 1.11.10 Das DATA-Filehandle [Seite 117]
3.1.11.11 - 1.11.11 Besonderheiten der Konsole [Seite 118]
3.1.11.12 - 1.11.12 Binäre Daten und Dateien [Seite 119]
3.1.11.13 - 1.11.13 Formatierte Ausgabe [Seite 120]
3.1.12 - 1.12 Verzeichnisse [Seite 129]
3.1.13 - 1.13 Referenzen [Seite 132]
3.1.13.1 - 1.13.1 Referenzen auf Variablen [Seite 133]
3.1.13.2 - 1.13.2 Referenzen als Funktionsparameter und -rückgaben [Seite 140]
3.1.13.3 - 1.13.3 Referenzen auf Funktionen [Seite 145]
3.1.13.4 - 1.13.4 Referenzen auf Filehandles [Seite 146]
3.1.13.5 - 1.13.5 Speicher und Speicherbereinigung [Seite 148]
3.1.13.6 - 1.13.6 Autovivikation [Seite 149]
3.1.14 - 1.14 Kommandozeilenparameter [Seite 149]
3.1.14.1 - 1.14.1 Das Parameter-Array @ARGV [Seite 150]
3.1.14.2 - 1.14.2 Kommandozeilen-Schalter [Seite 151]
3.1.14.3 - 1.14.3 Die Funktion getopts() [Seite 151]
3.1.14.4 - 1.14.4 Die Funktion getopt() [Seite 153]
3.1.15 - 1.15 Ausblick auf Perl 6 [Seite 153]
3.1.15.1 - 1.15.1 Neuigkeiten bei Perl 6 [Seite 154]
3.1.15.2 - 1.15.2 Neue Sprachkonstrukte [Seite 155]
3.1.15.3 - 1.15.3 Links [Seite 157]
3.2 - 2 Fehlersuche in Programmen [Seite 158]
3.2.1 - 2.1 Fehler suchen [Seite 158]
3.2.2 - 2.2 Der Perl-Debugger [Seite 161]
3.3 - 3 Stil und Dokumentation [Seite 168]
3.3.1 - 3.1 Stilvorschläge für Perl-Programme [Seite 169]
3.3.1.1 - 3.1.1 Allgemeines [Seite 169]
3.3.1.2 - 3.1.2 Namen [Seite 170]
3.3.1.3 - 3.1.3 Ausdrücke [Seite 170]
3.3.1.4 - 3.1.4 Programmformat [Seite 171]
3.3.2 - 3.2 Dokumentation [Seite 173]
3.3.2.1 - 3.2.1 Allgemeines [Seite 173]
3.3.2.2 - 3.2.2 POD-Überschriften [Seite 174]
3.3.2.3 - 3.2.3 Listeneinträge [Seite 174]
3.3.2.4 - 3.2.4 Texthervorhebungen [Seite 175]
3.3.2.5 - 3.2.5 Spezielle Ausgabeformate [Seite 175]
3.3.2.6 - 3.2.6 Erstellen einer Manual-Seite (Manpage) [Seite 177]
3.4 - 4 Komplexe Datenstrukturen [Seite 178]
3.4.1 - 4.1 Anonyme Strukturen [Seite 179]
3.4.2 - 4.2 Mehrdimensionale Arrays [Seite 183]
3.4.3 - 4.3 Array von Hashes [Seite 187]
3.4.4 - 4.4 Hash von Arrays [Seite 192]
3.4.5 - 4.5 Hash von Hashes [Seite 194]
3.4.6 - 4.6 Komplexe Datenstrukturen [Seite 196]
3.4.7 - 4.7 Ausgabe mit Data::Dumper [Seite 200]
3.4.8 - 4.8 Strukturen Kopieren und Speichern mit Storable [Seite 203]
3.4.9 - 4.9 Hash-Slices [Seite 205]
3.5 - 5 Externen Code ausführen [Seite 208]
3.5.1 - 5.1 Externen Code mittels do() ausführen [Seite 209]
3.5.2 - 5.2 Externen Code mit require() einbinden [Seite 210]
3.5.3 - 5.3 Externen Code mit use() einbinden [Seite 211]
3.6 - 6 Reguläre Ausdrücke [Seite 214]
3.6.1 - 6.1 Die Basis [Seite 215]
3.6.2 - 6.2 Operatoren für reguläre Ausdrücke [Seite 216]
3.6.3 - 6.3 Der Transliterationsoperator tr [Seite 219]
3.6.4 - 6.4 Anker und Zeichenklassen [Seite 221]
3.6.5 - 6.5 Quantifizierer [Seite 226]
3.6.6 - 6.6 Klammern und Rückbezüge [Seite 229]
3.6.7 - 6.7 Modifizierer [Seite 231]
3.6.8 - 6.8 Beliebige Begrenzer [Seite 235]
3.6.9 - 6.9 Perl-Besonderheiten [Seite 238]
3.6.10 - 6.10 Regex-Helfer [Seite 239]
3.7 - 7 Arrays, grep, map etc. [Seite 242]
3.7.1 - 7.1 Listen durchsuchen mit grep [Seite 243]
3.7.2 - 7.2 Listen modifizieren mit map [Seite 245]
3.7.3 - 7.3 map und sort [Seite 251]
3.7.4 - 7.4 Arrays manipulieren mit splice [Seite 253]
3.7.4.1 - 7.4.1 Array-Elemente entfernen [Seite 253]
3.7.4.2 - 7.4.2 Array-Elemente ersetzen [Seite 254]
3.7.4.3 - 7.4.3 Array-Elemente hinzufügen [Seite 254]
3.7.5 - 7.5 Array-Slices [Seite 255]
3.7.6 - 7.6 Das Modul List::Util [Seite 257]
3.8 - 8 Programmkonfiguration [Seite 260]
3.8.1 - 8.1 Konfiguration als Perl-Code [Seite 261]
3.8.2 - 8.2 Konfigurationsdatei mit Key-Value-Paaren [Seite 262]
3.9 - 9 Systeminformationen [Seite 268]
3.9.1 - 9.1 Systemspezifische Variablen [Seite 269]
3.9.2 - 9.2 Ausführen von Systemkommandos [Seite 270]
3.9.3 - 9.3 Systemfunktionen [Seite 271]
3.9.3.1 - 9.3.1 Die Funktionen setpwent, getpwent und endpwent [Seite 273]
3.9.3.2 - 9.3.2 Die Funktionen setgrent, getgrent und endgrent [Seite 274]
3.9.3.3 - 9.3.2 Die Funktionen getlogin, getpwuid und getpwnam [Seite 274]
3.9.3.4 - 9.3.4 Die Funktionen getgrgid und getgrnam [Seite 275]
3.9.3.5 - 9.3.5 Die Funktionen getpriority und setpriority [Seite 276]
3.9.3.6 - 9.3.6 Die Funktion getppid [Seite 277]
3.10 - 10 Prozesse und Signale [Seite 278]
3.10.1 - 10.1 Prozesse [Seite 279]
3.10.2 - 10.2 fork(), wait(), waitpid() und kill() [Seite 281]
3.10.3 - 10.3 Signale [Seite 286]
3.10.3.1 - 10.3.1 kill(SIG, Prozess) [Seite 287]
3.10.3.2 - 10.3.2 Signalhandler [Seite 288]
3.10.3.3 - 10.3.2 Die Alarm-Funktion [Seite 292]
3.10.4 - 10.4 Prozesskommunikation [Seite 294]
3.10.4.1 - 10.4.1 Pipes [Seite 294]
3.10.4.2 - 10.4.2 Named Pipes [Seite 297]
3.10.4.3 - 10.4.3 Prozesskommunikation mit open() [Seite 299]
3.10.4.4 - 10.4.4 System-V-IPC [Seite 300]
3.10.4.5 - 10.4.5 Einen Dämon erzeugen [Seite 303]
3.10.4.6 - 10.4.6 Benutzer- und Gruppen-ID ändern [Seite 307]
3.11 - 11 Internationalisierung [Seite 310]
3.11.1 - 11.1 Die locale-Kategorien [Seite 311]
3.11.2 - 11.2 Zeichensätze und Codierung [Seite 312]
3.11.3 - 11.3 locale und Programmierung [Seite 314]
3.11.3.1 - 11.3.1 Konfiguration ändern und ausgeben [Seite 314]
3.11.3.2 - 11.3.2 Funktionen für Zeichen [Seite 316]
3.11.3.3 - 11.3.3 ISO 3166: Norm zur Länder-Codierung [Seite 317]
3.11.3.4 - 11.3.4 ISO 4217: Norm für Währungsabkürzungen [Seite 318]
4 - Teil II: Packages, Module und Objekte [Seite 320]
4.1 - 12 Packages [Seite 322]
4.1.1 - 12.1 Namenskonflikte mit Packages auflösen [Seite 323]
4.1.2 - 12.2 Lexikalische Gültigkeitsbereiche [Seite 326]
4.1.3 - 12.3 Lokale Gültigkeitsbereiche [Seite 327]
4.1.4 - 12.4 Globale Variablen [Seite 329]
4.1.5 - 12.5 Typeglobs [Seite 330]
4.2 - 13 Module [Seite 334]
4.2.1 - 13.1 Perl-Module nutzen [Seite 336]
4.2.1.1 - 13.1.1 Module finden [Seite 338]
4.2.1.2 - 13.1.2 CPAN-Module installieren [Seite 340]
4.2.2 - 13.2 Eigene Module bauen [Seite 342]
4.2.3 - 13.3 Standardmodule [Seite 347]
4.2.4 - 13.4 Pragmas des Perl-Interpreters [Seite 356]
4.2.5 - 13.5 Modultests automatisieren [Seite 358]
4.2.5.1 - 13.5.1 Dokumentation testen [Seite 360]
4.2.5.2 - 13.5.2 Modultest [Seite 360]
4.2.5.3 - 13.5.3 Test::Simple [Seite 361]
4.2.5.4 - 13.5.4 Test::More [Seite 363]
4.2.6 - 13.6 Ein eigenes Modul erstellen [Seite 369]
4.2.6.1 - 13.6.1 Die Datei Makefile.PL [Seite 370]
4.2.6.2 - 13.6.2 Die Datei README [Seite 371]
4.2.6.3 - 13.6.3 Die Datei Changes [Seite 372]
4.2.6.4 - 13.6.4 Die Datei MANIFEST [Seite 372]
4.2.6.5 - 13.6.5 Testprogramme [Seite 373]
4.2.6.6 - 13.6.6 Das Modul selbst [Seite 373]
4.2.6.7 - 13.6.7 Das Modul testen [Seite 376]
4.2.6.8 - 13.6.8 Das Modul packen [Seite 377]
4.3 - 14 Objektorientiertes Perl [Seite 378]
4.3.1 - 14.1 Grundlagen der OOP [Seite 379]
4.3.1.1 - 14.1.1 Objekte und Klassen [Seite 379]
4.3.1.2 - 14.1.2 Kapselung (Encapsulation) [Seite 381]
4.3.1.3 - 14.1.3 Vererbung (Inheritance) [Seite 382]
4.3.1.4 - 14.1.4 Polymorphie (Polymorphism) [Seite 383]
4.3.2 - 14.2 Klassen, Objekte und Methoden [Seite 384]
4.3.2.1 - 14.2.1 Perl-OOP [Seite 386]
4.3.2.2 - 14.2.2 Zugriff auf Methoden [Seite 388]
4.3.2.3 - 14.2.3 Parameter des Konstruktors [Seite 390]
4.3.2.4 - 14.2.4 Accessors [Seite 395]
4.3.3 - 14.3 Vererbung [Seite 400]
5 - Teil III: Perl im Einsatz [Seite 412]
5.1 - 15 Datum und Uhrzeit [Seite 414]
5.1.1 - 15.1 Julianischer Tag [Seite 417]
5.1.2 - 15.2 Osterdatum und bewegliche Feste [Seite 423]
5.1.3 - 15.3 Das Modul Date::Calc [Seite 425]
5.2 - 16 User-Interaktion [Seite 436]
5.2.1 - 16.1 Erweiterte Kommandozeilenoptionen [Seite 437]
5.2.2 - 16.2 Einfache Interaktion mit dem Benutzer [Seite 441]
5.2.2.1 - 16.2.1 IO::Interactive [Seite 442]
5.2.2.2 - 16.2.2 Term::Readkey [Seite 443]
5.2.2.3 - 16.2.3 IO::Prompt [Seite 446]
5.2.3 - 16.3 Textbildschirm mit Curses [Seite 451]
5.2.3.1 - 16.3.1 Dokumentation [Seite 451]
5.3 - 17 Textmanipulation [Seite 462]
5.3.1 - 17.1 Programmierwerkzeuge [Seite 463]
5.3.1.1 - 17.1.1 Crossreferenz [Seite 463]
5.3.1.2 - 17.1.2 Hexdump [Seite 465]
5.3.1.3 - 17.1.3 Dateinamen heilen [Seite 467]
5.3.1.4 - 17.1.4 Passwort-Generator [Seite 469]
5.3.1.5 - 17.1.5 Doubletten finden [Seite 471]
5.3.2 - 17.2 Textersetzung in Dateien [Seite 473]
5.3.2.1 - 17.2.1 Schnipp-Schnapp [Seite 473]
5.3.2.2 - 17.2.2 Mehrfachersetzungen in einer Datei [Seite 474]
5.3.3 - 17.3 Texte bearbeiten und konvertieren [Seite 476]
5.3.3.1 - 17.3.1 Buchstabieren leicht gemacht [Seite 476]
5.3.3.2 - 17.3.2 Silbentrennung [Seite 477]
5.3.3.3 - 17.3.3 Stemmer [Seite 482]
5.3.3.4 - 17.3.4 Das Soundex-Verfahren [Seite 487]
5.3.3.5 - 17.3.5 Rhabarber, Rhabarber [Seite 488]
5.3.3.6 - 17.3.6 Lorem ipsum [Seite 489]
5.3.4 - 17.4 Verarbeitung von CSV- und Excel-Dateien [Seite 491]
5.3.4.1 - 17.4.1 CSV-Dateien parsen [Seite 492]
5.3.4.2 - 17.4.2 Excel-Dateien lesen [Seite 495]
5.3.4.3 - 17.4.3 Excel-Dateien erzeugen [Seite 496]
5.3.5 - 17.5 PDF-Dateien erzeugen [Seite 502]
5.3.6 - 17.6 Makros und Templates [Seite 507]
5.3.6.1 - 17.6.1 Ein Makroprozessor [Seite 507]
5.3.6.2 - 17.6.2 Text-Templates (Schablonen) [Seite 511]
5.4 - 18 Grafik mit Perl [Seite 520]
5.4.1 - 18.1 Grafik-Grundlagen [Seite 521]
5.4.1.1 - 18.1.1 Einteilung nach Bildformat/Speicherung [Seite 521]
5.4.1.2 - 18.1.2 Einteilung nach Farbe und Farbtiefe [Seite 522]
5.4.1.3 - 18.1.3 Farbensehen beim Menschen [Seite 523]
5.4.1.4 - 18.1.4 Farbmodelle [Seite 525]
5.4.1.5 - 18.1.5 Das RGB-Modell [Seite 526]
5.4.1.6 - 18.1.6 Das CMY-Modell [Seite 526]
5.4.1.7 - 18.1.7 Gammakorrektur [Seite 527]
5.4.1.8 - 18.1.8 Dithering [Seite 528]
5.4.1.9 - 18.1.9 Bildkompressionsverfahren [Seite 529]
5.4.1.10 - 18.1.10 Grafikformate [Seite 530]
5.4.2 - 18.2 Grafiken erzeugen mit dem GD-Modul [Seite 532]
5.4.2.1 - 18.2.1 Erzeugen und Speichern von Images [Seite 535]
5.4.2.2 - 18.2.2 Farben zuordnen [Seite 536]
5.4.2.3 - 18.2.3 Grundfunktionen zum Zeichnen [Seite 539]
5.4.2.4 - 18.2.4 Text im Bild ausgeben [Seite 545]
5.4.2.5 - 18.2.5 Polygone zeichnen [Seite 547]
5.4.2.6 - 18.2.6 Flächen füllen [Seite 553]
5.4.2.7 - 18.2.7 Spezielle Farbmuster [Seite 554]
5.4.2.8 - 18.2.6 Bilder oder Bildausschnitte kopieren [Seite 556]
5.4.3 - 18.3 Koordinatensysteme [Seite 561]
5.4.4 - 18.4 Informationen über Bilder [Seite 565]
5.4.4.1 - 18.4.1 Bildgröße ermitteln [Seite 565]
5.4.4.2 - 18.4.2 Bilddaten [Seite 566]
5.4.4.3 - 18.4.3 Screenshots anfertigen [Seite 567]
5.4.5 - 18.5 Das Chart-Paket [Seite 568]
5.4.6 - 18.6 Das Modul GraphViz [Seite 572]
5.4.6.1 - 18.6.1 Installation [Seite 572]
5.4.6.2 - 18.6.2 Attribute von new() [Seite 574]
5.4.6.3 - 18.6.3 Attribute für Knoten und Kanten [Seite 576]
5.4.6.4 - 18.6.4 GraphViz-Tools [Seite 583]
5.4.7 - 18.7 Strichcode mit GD erzeugen [Seite 584]
5.4.8 - 18.8 Bildbearbeitung mit PerlMagick [Seite 587]
5.4.8.1 - 18.8.1 Die ImageMagick-Programme [Seite 587]
5.4.8.2 - 18.8.2 PerlMagick = Image::Magick [Seite 594]
5.5 - 19 Die TK-Benutzerschnittstelle [Seite 618]
5.5.1 - 19.1 Ereignisgesteuerte Programme [Seite 619]
5.5.2 - 19.2 Einführung in Perl/Tk [Seite 620]
5.5.3 - 19.3 Widget-Optionen [Seite 623]
5.5.4 - Geometriemanager [Seite 629]
5.5.4.1 - Der Geometriemanager grid [Seite 629]
5.5.4.2 - Der Geometriemanager place [Seite 634]
5.5.4.3 - Der Geometriemanager pack [Seite 638]
5.5.5 - Frame- und Toplevel-Widgets [Seite 643]
5.5.5.1 - Das Widget frame [Seite 644]
5.5.5.2 - Das Toplevel-Widget [Seite 646]
5.5.6 - Die Perl/Tk-Widgets [Seite 647]
5.5.6.1 - Das Button-Widget [Seite 648]
5.5.6.2 - Das Label-Widget [Seite 650]
5.5.6.3 - Exkurs: Schriftarten (Fonts) bei X11 [Seite 652]
5.5.6.4 - Das Entry-Widget [Seite 656]
5.5.6.5 - Das Messagebox-Widget [Seite 658]
5.5.6.6 - Das Dialog-Widget [Seite 660]
5.5.6.7 - Das Checkbutton-Widget [Seite 663]
5.5.6.8 - Das Radiobutton-Widget [Seite 664]
5.5.6.9 - Das Listbox-Widget [Seite 667]
5.5.6.10 - Die Widgets Scrollbar, Scrolled und Scale [Seite 670]
5.5.6.11 - Grafik mit dem Canvas-Widget [Seite 677]
5.5.6.12 - Das Text-Widget [Seite 684]
5.5.6.13 - Menüs erzeugen mit Menu und Menubutton [Seite 688]
5.5.6.14 - Das Notebook-Widget [Seite 693]
5.5.6.15 - Ein Fortschrittsbalken-Widget [Seite 695]
5.5.7 - Maus und Tasten an Aktionen/Widgets binden [Seite 699]
5.6 - 20 MySQL-Datenbanken [Seite 710]
5.6.1 - 20.1 Einführung in Datenbanken [Seite 711]
5.6.1.1 - 20.1.1 Datenbankentwurf [Seite 715]
5.6.1.2 - 20.1.2 Elementare Datentypen [Seite 721]
5.6.1.3 - 20.1.3 Relationale Operationen [Seite 722]
5.6.2 - 20.2 Die Sprache SQL [Seite 726]
5.6.3 - 20.3 MySQL [Seite 730]
5.6.3.1 - 20.3.1 Installation und Inbetriebnahme [Seite 730]
5.6.3.2 - 20.3.2 MySQL-Datentypen [Seite 734]
5.6.3.3 - 20.3.3 Datenbankabfrage mit SELECT [Seite 740]
5.6.3.4 - 20.3.4 Joins - Abfragen mit SELECT [Seite 748]
5.6.3.5 - 20.3.5 Zeichenkettenoperationen [Seite 755]
5.6.3.6 - 20.3.6 Datums- und Zeitfunktionen [Seite 756]
5.6.3.7 - 20.3.7 Bedingte Anweisungen [Seite 757]
5.6.3.8 - 20.3.8 Tabellen importieren oder clonen [Seite 757]
5.6.3.9 - 20.3.9 Datensätze ändern oder löschen [Seite 760]
5.6.3.10 - 20.3.10 Felder einer Tabelle ändern [Seite 761]
5.6.3.11 - 20.3.11 Datenbank sichern [Seite 763]
5.6.4 - 20.4 Die Perl-DBI-Schnittstelle [Seite 764]
5.6.4.1 - 20.4.1 Verbindung zur Datenbank öffnen [Seite 765]
5.6.4.2 - 20.4.2 Allgemeine Funktionen [Seite 768]
5.6.4.3 - 20.4.3 Übergabe von User, Passwort und Datenbank [Seite 769]
5.6.4.4 - 20.4.4 Metadaten zur Datenbank ermitteln [Seite 770]
5.6.4.5 - 20.4.5 MySQL-Tabellen anlegen [Seite 772]
5.6.4.6 - 20.4.6 Zugriff auf die Datensätze [Seite 773]
5.6.4.7 - 20.4.7 MySQL-Spezialfunktionen und Fehlerbehandlung [Seite 782]
5.6.4.8 - 20.4.8 Bilder abspeichern und anzeigen [Seite 784]
5.6.4.9 - 20.4.9 Anwendungsbeispiel: IP-Adresse dem Land zuordnen [Seite 786]
5.6.4.10 - 20.4.10 SQL-Injection [Seite 791]
5.7 - 21 Netzwerkprogrammierung [Seite 794]
5.7.1 - 21.1 Socketprogrammierung [Seite 795]
5.7.1.1 - 21.1.1 Die Socket-Netzwerkschnittstelle [Seite 795]
5.7.1.2 - 21.1.2 Die Socket-Funktionen des Betriebssystems [Seite 800]
5.7.1.3 - 21.1.3 Der erste Perl-Server und -Client [Seite 804]
5.7.2 - 21.2 Netzwerkfunktionen in Perl [Seite 806]
5.7.2.1 - 21.2.1 IP-Adressen [Seite 806]
5.7.2.2 - 21.2.2 Informationsfunktionen [Seite 807]
5.7.3 - 21.3 Die Socket-Schnittstelle IO::Socket::INET [Seite 813]
5.7.3.1 - 21.3.1 Der Konstruktor new [Seite 813]
5.7.3.2 - 21.3.2 Aktive Methoden [Seite 814]
5.7.3.3 - 21.3.3 Informationsmethoden [Seite 815]
5.7.3.4 - 21.3.4 Gepufferte Ein- und Ausgabe [Seite 816]
5.7.4 - 21.4 Namensauflösung [Seite 816]
5.7.5 - 21.5 Server und Client in Perl [Seite 818]
5.7.6 - 21.6 Forking Server in Perl [Seite 821]
5.7.7 - 21.7 Server für bestimmte Dienste [Seite 824]
5.7.7.1 - 21.7.1 Sprüche-Server [Seite 825]
5.7.7.2 - 21.7.2 Keks-Server [Seite 826]
5.7.7.3 - 21.7.3 Server für HTTP [Seite 827]
5.7.7.4 - 21.7.4 Preforking [Seite 839]
5.7.7.5 - 21.7.5 Serverdienste über inetd [Seite 840]
5.7.7.6 - 21.7.6 Protokollierung [Seite 842]
5.7.7.7 - 21.7.7 Timeouts abfangen [Seite 844]
5.7.8 - 21.8 Perl-Clients für Standarddienste [Seite 844]
5.7.8.1 - 21.8.1 Client für Binärdaten [Seite 844]
5.7.8.2 - 21.8.2 Webclients [Seite 846]
5.7.8.3 - 21.8.3 FTP-Clients [Seite 860]
5.7.9 - 21.9 Portscanner [Seite 863]
5.7.10 - 21.10 Ping [Seite 864]
5.7.11 - 21.11 Rechner im Netz suchen [Seite 867]
5.7.12 - 21.12 Spezielle Netzwerkanwendungen [Seite 870]
5.7.12.1 - 21.2.1 Aktienkurse auslesen [Seite 870]
5.7.12.2 - 21.12.2 Comics herunterladen [Seite 873]
5.7.12.3 - 21.12.3 Wake-On-LAN [Seite 877]
5.7.12.4 - 21.12.4 Ein Protokoll entwerfen [Seite 880]
5.7.12.5 - 21.12.5 Webcams auslesen [Seite 886]
5.7.12.6 - 21.12.6 Steuern über das Netz [Seite 891]
5.8 - 22 E-Mail [Seite 902]
5.8.1 - 22.1 E-Mail-Grundlagen [Seite 903]
5.8.1.1 - 22.1.1 Ein Blick auf den Briefkopf [Seite 904]
5.8.1.2 - 22.1.2 Mailing-Listen [Seite 905]
5.8.1.3 - 22.1.3 Was ist MIME? [Seite 906]
5.8.1.4 - 22.1.4 POP -- Post Office Protocol [Seite 908]
5.8.1.5 - 22.1.5 IMAP -- Internet Message Access Protocol [Seite 911]
5.8.1.6 - 22.1.6 Der Mail Transport Agent [Seite 912]
5.8.2 - 22.2 E-Mail versenden mit Perl [Seite 915]
5.8.2.1 - 22.2.1 Mailversand mit Sendmail [Seite 915]
5.8.2.2 - 22.2.2 Mailversand mit Netzwerkfunktionen [Seite 916]
5.8.2.3 - 22.2.3 Mailversand mit Net::SMTP [Seite 918]
5.8.2.4 - 22.2.4 Ein Mini-MTA [Seite 921]
5.8.3 - 22.3 E-Mail mit Attachmentversenden [Seite 922]
5.8.4 - 22.4 MIME-Mails verarbeiten [Seite 928]
5.8.4.1 - 22.4.1 Das Modul MIME::Parser [Seite 928]
5.8.4.2 - 22.4.2 Der Mail-Analysator [Seite 936]
5.8.4.3 - 22.4.3 Die Dateien aliases und .forward [Seite 940]
5.8.5 - 22.5 E-Mail vom Mailserver holen [Seite 942]
5.8.5.1 - 22.5.1 E-Mail per POP3 holen [Seite 942]
5.8.5.2 - 22.5.2 E-Mail per IMAP holen [Seite 945]
5.9 - 23 CGI und HTML [Seite 952]
5.9.1 - 23.1 Das Hypertext Transfer Protocol [Seite 954]
5.9.1.1 - 23.1.1 Struktur der HTTP-Botschaften [Seite 955]
5.9.1.2 - 23.1.2 Antwortcodes eines WWW-Servers [Seite 957]
5.9.2 - 23.2 Common Gateway Interface (CGI) [Seite 958]
5.9.2.1 - 23.2.1 Daten empfangen [Seite 960]
5.9.2.2 - 23.2.2 Dem Browser eine Antwort geben [Seite 962]
5.9.2.3 - 23.2.3 Sicherheit und CGI-Programme [Seite 964]
5.9.2.4 - 23.2.4 Wenn das CGI-Programm nicht läuft [Seite 969]
5.9.2.5 - 23.2.5 HTML-Formulare [Seite 970]
5.9.2.6 - 23.2.6 CGI-Programme und die Webseite [Seite 977]
5.9.3 - 23.3 CGI-Programmierung [Seite 980]
5.9.3.1 - 23.3.1 Ablauf eines CGI-Programms [Seite 980]
5.9.3.2 - 23.3.2 Decodierung der übergebenen Daten [Seite 981]
5.9.3.3 - 23.3.3 Fehlerbehandlung im Browser [Seite 992]
5.9.3.4 - 23.3.4 Ein Blick auf den HTTP-Header [Seite 994]
5.9.3.5 - 23.3.5 Formulare generieren [Seite 996]
5.9.3.6 - 23.3.6 Binärinformation zurückgeben [Seite 1002]
5.9.3.7 - 23.3.7 Einige einfache Anwendungen [Seite 1008]
5.9.4 - 23.4 Das CGI-Modul [Seite 1026]
5.9.4.1 - 23.4.1 Erzeugung eines neuen CGI-Query-Objekts [Seite 1030]
5.9.4.2 - 23.4.2 Formularparameter bearbeiten [Seite 1031]
5.9.4.3 - 23.4.3 CGI-Modul und HTTP-Header [Seite 1033]
5.9.4.4 - 23.4.4 HTML-Header und -Footer [Seite 1036]
5.9.4.5 - 23.4.5 Erzeugung von Formularen [Seite 1037]
5.9.4.6 - 23.4.6 Standard-HTML-Elemente erzeugen [Seite 1043]
5.9.4.7 - 23.4.7 Die funktionsorientierte Schnittstelle [Seite 1044]
5.9.4.8 - 23.4.8 Debugging-Tips [Seite 1046]
5.9.5 - 23.5 Datei-Upload per Formular [Seite 1048]
5.9.6 - 23.6 Session-Tracking [Seite 1051]
5.9.6.1 - 23.6.1 Zustandsspeicherung über PATH_INFO [Seite 1053]
5.9.6.2 - 23.6.2 Zustandsspeicherung per URL-Encoding [Seite 1054]
5.9.6.3 - 23.6.3 Zustandsspeicherung über Hidden-Felder [Seite 1055]
5.9.6.4 - 23.6.4 Zustandsspeicherung über Cookies [Seite 1056]
5.9.7 - 23.7 Datenbankzugriffe in CGI-Programmen [Seite 1068]
5.9.8 - 23.8 Captchas [Seite 1071]
5.9.9 - 23.9 Fehler im Webserver-Log suchen [Seite 1078]
5.9.10 - 23.10 Webseiten lokal zum Browser schicken [Seite 1080]
5.10 - 24 Suchen und Finden [Seite 1082]
5.10.1 - 24.1 Eine kleine lokale Suchmaschine [Seite 1085]
5.10.2 - 24.2 Dateien indizieren [Seite 1090]
5.10.2.1 - 24.2.1 Konfiguration des Indexers [Seite 1092]
5.10.2.2 - 24.2.2 Texte indizieren [Seite 1095]
5.10.2.3 - 24.2.3 Ein Volltextindex auf Dateibasis [Seite 1102]
5.10.2.4 - 24.2.4 Ein Volltextindex mit MySQL [Seite 1105]
5.10.3 - 24.3 Mit Swish-E Webseiten indizieren [Seite 1111]
5.10.4 - 24.4 Links überprüfen [Seite 1120]
5.11 - 25 Numerik und Statistik [Seite 1124]
5.11.1 - 25.1 Mathematikmodule [Seite 1125]
5.11.1.1 - 25.1.1 Große Ganzzahlen [Seite 1125]
5.11.1.2 - 25.1.2 Große Gleitkommazahlen [Seite 1128]
5.11.1.3 - 25.1.3 Komplexe Zahlen [Seite 1130]
5.11.1.4 - 25.1.4 Trigonometrische Funktionen [Seite 1132]
5.11.2 - 25.2 Deskriptive Statistik [Seite 1137]
5.11.2.1 - 25.2.1 Tabellarische und grafische Darstellung [Seite 1137]
5.11.2.2 - 25.2.2 Mittelwert, Varianz, Standardabweichung, Standardfehler [Seite 1138]
5.11.2.3 - 25.2.3 Minimum, Maximum, Median, Modalwert [Seite 1140]
5.11.2.4 - 25.2.4 Lineare Regression [Seite 1142]
5.11.3 - 25.3 Geometrie: Polygonumfang und -Fläche [Seite 1144]
5.11.4 - 25.4 Nullstellen von Gleichungen [Seite 1146]
5.11.5 - 25.5 Numerische Integration [Seite 1151]
5.11.6 - 25.6 Permutationen [Seite 1153]
5.12 - 26 Perl und die Hardware [Seite 1154]
5.12.1 - 26.1 You must be root . [Seite 1155]
5.12.2 - 26.2 Die parallele Schnittstelle [Seite 1156]
5.12.2.1 - 26.2.1 Parallele Grundlagen [Seite 1157]
5.12.2.2 - 26.2.2 Programmierung der parallelen Schnittstelle [Seite 1160]
5.12.3 - 26.3 Die serielle Schnittstelle [Seite 1164]
5.12.3.1 - 26.3.1 Serielle Grundlagen [Seite 1164]
5.12.3.2 - 26.3.2 Programmierung mit Perl [Seite 1168]
5.12.3.3 - 26.3.3 Steuer- und Statusleitungen, Meldungen, Einstellungen [Seite 1175]
5.12.3.4 - 26.3.4 Serielle Ein- und Ausgabe, Timeouts [Seite 1182]
5.12.3.5 - 26.3.5 Betrieb mit Modems etc. [Seite 1189]
5.12.3.6 - 26.3.6 Messwerterfassung über die serielle Schnittstelle [Seite 1195]
5.12.4 - 26.4 Die USB-Schnittstelle [Seite 1203]
5.12.4.1 - 26.4.1 Informationen über den USB einholen [Seite 1204]
5.12.4.2 - 26.4.2 USB über die libusb ansteuern [Seite 1211]
6 - Literatur [Seite 1218]
7 - Index [Seite 1220]
12 Packages (S. 321-322)
Sie haben einige Funktionen geschrieben, um beispielsweise Daten einer Datenbank als HTML-Tabelle auszugeben. Weil Sie diese Funktionen öfter brauchen, stehen sie in einer eigenen Datei und werden als Modul ins aktuelle Programm eingebunden wie es in Kapitel 5 auf den Seiten 207ff beschrieben wurde. Im Programm selbst findet sich nun unglücklicherweise eine Funktion mit dem gleichen Namen wie eine Funktion in der externen Datei. Das Problem: Es gibt zwei verschiedene Funktionen mit dem gleichen Namen, was eher suboptimal ist. Wenn Sie sich jetzt vorstellen, dass mehrere Programmierer an einen Gesamtsystem arbeiten, sind solche Doubletten häufig die Regel.
Sie erinnern sich noch an Teil 1? Der Gültigkeitsbereich einer Variablen bezieht sich darauf, in welchen Bereichen eines Programms man auf eine Variable oder Funktion zugreifen kann. Von einem globalen Gültigkeitsbereich spricht man, wenn eine Variable im gesamten Programm verfügbar ist und so lange existiert, wie dieses ausgeführt wird. Von einem lokalen Gültigkeitsbereich spricht man hingegen, wenn eine Variable nur begrenzt gültig ist, z. B. nur innerhalb einer Funktion.
Die beste Möglichkeit, Namenskonflikte durch globale Variablen zu umgehen, besteht im Verzicht auf globale Variablen. Unterprogramme haben durchweg lokale Variablen, Werte werden gegebenenfalls über Parameter weitergereicht. Manche Softwareentwickler glauben, dies sei die Lösung aller Probleme, und das Vermeiden von globalen Variablen entspräche professionellem Softwaredesign. In der Realität werden globale Variablen aber eingesetzt. Solange man das nicht übertreibt, ist das auch durchaus in Ordnung.
12.1 Namenskonflikte mit Packages auflösen
Perl stellt mit seinen Packages (Pakete) einen Mechanismus zur Verfügung, der die Definition verschiedener, sich nicht überlappender Namensbereiche ermöglicht. Dies ist die Grundlage für die Verwendung von Perl-Bibliotheken und für die Entwicklung größerer Programmsysteme (Modularisierung). Außer einer handvoll spezieller Variablen gibt es in Perl im Prinzip keine globalen Variablen, da jede Variable automatisch dem (implizit immer vorhandenen) Package main zugeordnet ist. Mit der package-Anweisung wählt der Programmierer den gewünschten Namensraum für seine Variablen und Funktionen aus. Der Gültigkeitsbereich einer package-Anweisung beginnt bei dieser Anweisung und endet am Ende des umgebenden Blockes. Variablen eines anderen Packages können unter Angaben des Package-Namens mit folgender Notation referenziert werden:
$Packagename::Variable
Bei Perl 4 war noch die Notation $Packagename’Variable möglich, die man heute nicht mehr einsetzen sollte. Die package-Anweisung wird häufig an den Anfang einer Datei gesetzt, die ein anderes Programm dann mittels require-Anweisung einbindet. Das Prinzip der Packages besteht darin, dass für jedes Paket ein eigener Satz von Variablennamen existiert, der bestimmt, ob eine Variable für Perl verfügbar ist und wie der aktuelle Wert der Variablen lautet. Dies nennt sich „Symboltabelle“. Sie enthält alle Namen, die Sie möglicherweise in Ihrem Programm verwenden: Skalare, Arrays, Hashes und Funktionen.
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.