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 |