Der Perl Programmierer - Perl lernen - Professionell anwenden - Lösungen nutzen

Jürgen Plate

Der Perl Programmierer

Perl lernen - Professionell anwenden - Lösungen nutzen

2010

1234 Seiten

Format: PDF, Online Lesen

E-Book: €  47,99

E-Book kaufen

E-Book kaufen

ISBN: 9783446424494

 

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