PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic...

30
PERL HACKS Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic mit Damian Conway & Curtis »Ovid« Poe Deutsche Übersetzung von Jørgen W. Lang Deutsche Ausgabe

Transcript of PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic...

Page 1: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

PERLHACKS

Tipps & Tools zum Programmieren, Debuggen und Überleben

TM

chromatic mit Damian Conway & Curtis »Ovid« Poe

Deutsche Übersetzung von Jørgen W. Lang

Deutsche

Ausgabe

Page 2: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr
Page 3: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

PERLHACKS

chromatic, Damian Conway und Curtis »Ovid« PoeDeutsche Übersetzung von

Jørgen W. Lang

Beijing • Cambridge • Farnham • Köln • Paris • Sebastopol • Taipei • Tokyo

TM

Page 4: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Die Informationen in diesem Buch wurden mit größter Sorgfalt erarbeitet. Dennoch können Fehler nicht vollständig ausgeschlossen werden. Verlag, Autoren und Übersetzer übernehmen keine juristische Verantwortung oder irgendeine Haftung für eventuell verbliebene Fehler und deren Folgen.Alle Warennamen werden ohne Gewährleistung der freien Verwendbarkeit benutzt und sind möglicherweise eingetragene Warenzeichen. Der Verlag richtet sich im Wesentlichen nach den Schreibweisen der Hersteller. Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung,Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.

Kommentare und Fragen können Sie gerne an uns richten:O’Reilly VerlagBalthasarstr. 8150670 KölnTel.: 0221/9731600Fax: 0221/9731608E-Mail: [email protected]

Copyright der deutschen Ausgabe:© 2006 by O’Reilly Verlag GmbH & Co. KG1. Auflage 2006

Die Originalausgabe erschien 2006 unter dem TitelPerl Hacks bei O’Reilly Media, Inc.

Die Darstellung von Schuhen im Zusammenhang mit dem Thema Perl ist ein Warenzeichen von O’Reilly Media, Inc. »Hacks Books« und »The Hacks Series« und darauf basierende Warenzeichen und Logos sind Waren-zeichen von O’Reilly Media und dürfen nicht ohne schriftliche Genehmigung verwendet werden.

Bibliografische Information Der Deutschen BibliothekDie Deutsche Bibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.ddb.de abrufbar.

Übersetzung und deutsche Bearbeitung: Jørgen W. LangLektorat: Volker Bombien, KölnKorrektorat: Oliver Mosler, KölnSatz: DREI-SATZ, HusbyUmschlaggestaltung: Linda Palo, Sebastopol und Michael Oreal, KölnProduktion: Andrea Miß, KölnBelichtung, Druck und buchbinderische Verarbeitung:Druckerei Media-Print, Paderborn

ISBN-10 3-89721-474-1ISBN-13 978-3-89721-474-3

Dieses Buch ist auf 100% chlorfrei gebleichtem Papier gedruckt.

Page 5: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

| V

Credits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . IX

Vorwort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . XV

Kapitel 1. Hacks zur Steigerung der Produktivität . . . . . . . . . . . . . . . . . . 11. Schnellerer CPAN-Zugriff mit den dynamischen

Lesezeichen von Firefox 1

2. Die Möglichkeiten von perldoc ausschöpfen 4

3. Die Perl-Dokumentation online lesen 7

4. Shell-Aliase effektiv nutzen 9

5. Perl-Identifier in Vim automatisch vervollständigen 12

6. Den besten Emacs-Modus für Perl finden 16

7. Eigene Stilvorgaben einhalten 17

8. Schlechten Perl-Code gar nicht erst sichern 21

9. Automatische Code-Überprüfung beim Einchecken 25

10. Tests innerhalb von Vim durchführen 28

11. Perl direkt aus Emacs ausführen 29

Kapitel 2. Benutzer-Interaktion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3212. $EDITOR als UI verwenden 32

13. Richtige Interaktion auf der Kommandozeile 34

14. Interaktionen mit dem Terminal vereinfachen 37

15. Warnhinweise am Mac 42

16. Interaktive grafische Programme 44

17. Konfigurationsinformationen sammeln 51

18. Websites nach eigenen Wünschen darstellen 54

Inhalt

Page 6: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

VI | Inhalt

Kapitel 3. Datenbearbeitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5819. Dateien als Array behandeln 58

20. Dateien rückwärts lesen 60

21. Beliebige Tabellenkalkulationen als Datenquelle 62

22. Datenbank-Code auslagern 66

23. Eine SQL-Bibliothek 69

24. Dynamische Datenbankabfragen ohne SQL 71

25. Datenbankspalten binden 73

26. Teure Datenstrukturen durch Iteration erzeugen 75

27. Mehrere Werte gleichzeitig aus einem Iterator auslesen 77

Kapitel 4. Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8128. Lange Klassennamen verkürzen 81

29. Modulpfade verwalten 83

30. Modifizierte Module neu laden 85

31. Persönliche Modul-Bundles erstellen 87

32. Modul-Installationen verwalten 89

33. Modulpfade im Voraus auflösen 92

34. Legen Sie sich einen Standardsatz von Modulen an 94

35. Demoprogramme direkt aus der Dokumentation erstellen 97

36. Schlechten Code von außen ersetzen 99

37. Auf das Wohl von CPAN! 101

38. Bessere Fehlerbehandlung 102

39. CPAN-Module lokal durchsuchen 105

40. Selbstständige Perl-Anwendungen 109

41. Eigene lexikalische Warnungen 113

42. Programmierfehler in Modulen finden und protokollieren 115

Kapitel 5. Objekt-Hacks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12143. Inside-Out-Objekte umkrempeln 121

44. Objekte (fast) kostenlos serialisieren 124

45. Mehr Informationen durch Attribute 126

46. Methoden komplett privatisieren 129

47. Methodenargumente automatisch deklarieren 133

48. Zugriffskontrolle für entfernte Objekte 136

49. Wirklich polymorphe Objekte 139

50. Akzessoren automatisch erzeugen 142

Page 7: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Inhalt | VII

Kapitel 6. Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14751. Kompilierungsfehler schnell finden 147

52. Unsichtbares sichtbar machen 149

53. Debugging mit Testszenarien 151

54. Debugging mit Kommentaren 154

55. Bei Fehlern den Quellcode anzeigen 158

56. Anonyme Funktionen deparsen 160

57. Anonyme Subroutinen benennen 162

58. Die Herkunft von Subroutinen ermitteln 165

59. Den Debugger anpassen 166

Kapitel 7. Entwicklertricks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17060. Distributionen neu anlegen 170

61. Spezifikationsbasierte Tests 172

62. Entwickler- und Benutzertests trennen 176

63. Automatische Tests 179

64. Diagnosemeldungen fehlgeschlagener Tests ausgeben – in Farbe! 181

65. Code im laufenden Betrieb testen 183

66. Bei Benchmarks schummeln 187

67. Bauen Sie Ihr eigenes Perl 188

68. Testsuiten persistent ausführen 191

69. Feindliche Umgebungen in Ihren Tests simulieren 196

Kapitel 8. Kenne deinen Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20270. Verstehen, was zu welcher Zeit passiert 202

71. Datenstrukturen untersuchen 206

72. Funktionen gefahrlos finden 208

73. Was gehört seit wann zum Kern? 211

74. Die Übersicht über alle verwendeten Module behalten 213

75. Alle Symbole eines Packages finden 216

76. Ein Blick in das Innere von Closures 219

77. Wirklich alle globalen Variablen finden 222

78. Introspektion von Subroutinen 225

79. Importierte Funktionen finden 229

80. Wie viel Platz braucht mein Programm? 231

81. Perl-Prozesse wiederverwenden 234

82. Ops genauer untersuchen 236

83. Eigene Warnmeldungen 239

Page 8: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

VIII | Inhalt

Kapitel 9. Erweitern Sie Ihr Perl Foo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24384. Datenverdopplung mit Dualvars 243

85. Weiche Referenzen durch echte ersetzen 245

86. Lästige Dinge wegoptimieren 248

87. Hashes sperren 249

88. Aufräumarbeiten beim Verlassen des Geltungsbereichs 251

89. Funktionen auf ungewöhnliche Weise aufrufen 253

90. Zahlenfolgen mit Globs erzeugen 259

91. Mit weniger Code zur Fehlerprüfung auskommen 262

92. Intelligentere Werte zurückgeben 264

93. Aktive Werte zurückgeben 268

94. Die Perl-Syntax erweitern 272

95. Semantik über einen Quellcodefilter verändern 274

96. Dynamische Bibliotheken ohne XS benutzen 278

97. Zwei Dienste auf einem gemeinsamen TCP-Port laufen lassen 281

98. Bessere Dispatch-Tabellen 285

99. Näherungswerte 288

100. Operatoren überladen 292

101. Von verworrenem Code lernen 296

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299

Page 9: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

| IX

0

Credits

Über die Autorenchromatic arbeitet für O’Reilly Media, wo er für die Websites zu den ThemenFreie und Open Source Software des O’Reilly Network zuständig ist. In seinerFreizeit schreibt er Bücher wie dieses hier. Die verbleibenden Minuten wid-met er dem CPAN, Perl 5, Perl 6, Parrot und sogar Pugs. Er lebt in Portland,Oregon in der Nähe eines Parks und eines Baches. Er würde gerne eines Tagesmehr Projekte abschließen, wie das Schreiben eines Romans, eines Comicbu-ches, einer Fernsehshow und vielleicht endlich mal zum Schlafen kommen.Informationen zu seinen Hobbies finden Sie unter http://wgz.org/chromatic.

Dr. Damian Conway ist ein professioneller Perl-Gelehrter. Er ist Autor vielerbeliebter CPAN-Module (http://search.cpan.org/~dconway) und zweier hoch-gelobter Bücher zum Thema Perl. Außerdem ist er ein gefragter Redner aufKonferenzen. Damian Conway ist darüber hinaus Chef der internationen IT-Training-Firma Thoughstream, die in Europa, Nordamerika und AustralasienPerl-Schulungen durchführt. Es gibt Schulungen für alle Bildungsniveaus –vom Anfänger bis zum Masterclass-Level. Den übrigen Teil seiner Zeit ver-bringt er damit, zusammen mit Larry Wall am Design von Perl 6 zu arbeiten.[Hack #5], [Hack #13], [Hack #14], [Hack #34], [Hack #54], [Hack #86], [Hack #90], [Hack #92], [Hack #93],[Hack #94], [Hack #95], [Hack #99], [Hack #100]

Etwas früher in diesem Jahrhundert wechselte Curtis »Ovid« Poe von der Pro-grammierung von Mainframes zur Web-Programmierung. Damit zeigte erwieder einmal seinen ausgezeichneten Sinn für den richtigen Moment – erkam gerade richtig, um zu sehen, wie die Dotcom-Blase platzte. Trotz dieseskleinen Rückschlags und der Arbeit für verschiedene, mittlerweile nicht mehrexistierende Firmen, blieb Ovid bei Perl und stellte irgendwann fest, dass esihm sogar gefällt. Er tritt regelmäßig als Gastredner bei Benutzergruppen auf,ist Autor einer Vielzahl von CPAN-Modulen und eines beliebten Perl-CGI-

Page 10: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

X | Credits

Kurses. Ovid ist Mitglied des Perl Foundation Steering Committee und Vor-sitzender des TPF GRant Comittee.[Hack #10], [Hack #31], [Hack #50], [Hack #56], [Hack #57], [Hack #58], [Hack #60]

Über den ÜbersetzerJørgen Lang lebt als freier Übersetzer, Webdesigner, Programmierer, Dozentund Musiker in Hamburg. Mit dem Web kam er 1996 zum ersten Mal in Kon-takt. Im Laufe der folgenden Jahre eignete er sich im Selbststudium ein umfas-sendes Wissen rund um die Webprogrammierung und das Design vonWebseiten an.

Seine Übersetzertätigkeit begann im Jahr 2000 mit dem Buch CGI-Program-mierung mit Perl und umfasst mittlerweile ein Dutzend Titel rund um dasWeb und zu verwandten Themen. Neben seiner Arbeit als Übersetzer stehtJørgen auch als Dozent zu den Themen Webdesign und Webprogrammie-rung zur Verfügung. Während seiner übrigen Zeit widmet sich Jørgen meis-tens dem einen oder anderen Musikprojekt. Zu erreichen ist Jørgen unter derE-Mail-Adresse [email protected].

Über die MitwirkendenPerl ist auch eine Sprache mit einer großen und vielseitigen Gemeinschaft ausExperten, Magiern, Gurus, Spinnern und Nichtsnutzen. Einige der schil-lerndsten Persönlichkeiten dieser Gemeinschaft haben zu diesem Buch beige-tragen.

Adrian Howard hofft immer noch, dass Lisp und Smalltalk eines Tages dieWeltherrschaft übernehmen. Zwischendrin verdient er sein Geld unter ande-rem damit, dass er mit Perl und Ruby herumspielt. Bewegungsfanatiker.Begeisterter Tester. Überzeugter Missionar für Benutzerfreundlichkeit. Ovidnutzte sein schlechtes Gewissen aus, um ihn zum Perl Grant Manager zumachen. Spart auf ein Schlösschen, dass er mit seiner geliebten Kathryn undeiner kleinen Schar loyaler Yorkshire Terrier bewohnen kann. [Hack #15], [Hack #63]

Chris Dolan lebt als Software-Entwickler in Madison, Wisconsin. Mit seinemDoktortitel in Astronomie hat er einen starken wissenschaftlichen Hinter-grund. Er begann in den späten 80er Jahren als Teenager mit dem Program-mieren. Während seiner Freizeit ist er aktiver Teilnehmer in verschiedenenOnline-Gemeinschaften für Softwareentwicklung und begeisterter Radfahrer.[Hack #40]

David Landgren begann Perl 4.019 einzusetzen, als awk für seine Ziele nichtmehr ausreichte. 1999 gründete er die Paris Perl Mongers und half dabei, dieYAPC::Europe-Konferenz 2003 zu organisieren. Im Moment arbeitet er für

Page 11: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Credits | XI

eine französische Personalfirma, wo er den Titel IT-Operations Manager trägtund dabei natürlich jede erdenkliche Aufgabe mit Perl löst. In seiner knappbemessenen Freizeit schreibt er Zusammenfassungen für die perl5-porters-Mailingliste. Sie erreichen David unter der Adresse [email protected].[Hack #98]

David Wheeler ist schon seit langem ein Perl Hacker. Er machte sich einenNamen als führender Entwickler für das Content Management System Brico-lage und als Präsident und Gründer von Kineticode (http://www.kineticode.com), einer Firma für Web-Software. Seine Arbeit an Bricloage brachte ihnletztes Jahr zur Entwicklung von Kinetic, einer Applikations-Plattform dernächsten Generation für Firmen-Web Services. David lebt in Portland, Ore-gon. [Hack #7], [Hack #28]

Guillaume Cottenceau ist Software-Entwickler und interessiert sich schon zulange für Computer, als das er noch weiß, seit wann. Er programmiert gernmit den verschiedensten Werkzeugen und Sprachen und hatte dabei auchnoch das Glück, Katalysator für ein Spiel namens »Frozen-Bubble« sein zudürfen, dass regelmäßig als Lieblingsspiel der Linux-Gemeinschaft bezeichnetwird. [Hack #16]

H. Merijn Brand ist ein Perl 5 Porter, der Configure Pumpking und Mitgliedder Amsterdam Perl Mongers. Er wurde am 30. Dezember 1961 geboren, istverheiratet und hat zwei Kinder. Seit 1991 hat er als Datenanalyst für dieFirma PROCURA B.V. in den Niederlanden gearbeitet. Seine Homepage fin-den Sie unter http://mirrors.develooper.com/hpux. [Hack #21]

Jesse Vincent trinkt eigentlich gar nicht so oft, ist aber der Meinung, dass eineroder zwei Drinks das CPAN auf bemerkenswerte Weise verbessern. [Hack #37]

Joe McMahon ist bei Yahoo! für die Automatisierung von Tests zuständigund besitzt eine langjährige Erfahrung als Entwickler. Er arbeitete 25 Jahre fürdie NASA, wo er in so ziemlich allen Bereichen eingesetzt wurde, von Syste-men zur Bodenkommunikation für Raumfahrzeuge bis hin zur Webentwick-lung. Seine Beiträge zu Perl umfassen die Unterstützung der Tests für denPerl-Kern, die interne Dokumentation für den Perl-Debugger und die Unter-stützung einer Reihe von Perl-Modulen, von App::SimpleScan und WWW::Mechanize::Pluggable bis hin zu Date::PeriodParser und GraphViz::Data::Structure. [Hack #59]

Joshua ben Jore kam zu Perl, weil er ein CGI-Programm für eine politischeKampagne schreiben musste und gehört hatte, dass Perl am besten für solcheZwecke geeignet sei. Als er merkte, wie wunderbar das CPAN ist, blieb er ein-fach dabei. Seine aktuellen Projekte drehen sich darum, Lisp-artige Makrosund die Auswertung bei Bedarf (»lazy evaluation«) in Perl umsetzen und her-

Page 12: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

XII | Credits

auszufinden, was Prolog so zu bieten hat. Er ist bei perlmonks.org unter demNamen diotalevi sehr bekannt. Joshua bekennt sich dazu, ein Morrisdancerzu sein. [Hack #83]

Michael Graham ist ein Perl-Programmierer, der in Toronto lebt, wo er mitCGI::Application und dessen reichhaltigen Fundus an Plugins Web-Applika-tion für Wilder & Associates (http://www.wilder.ca) schreibt. Michael magMusik, lange Strandspaziergänge und testbasierte Entwicklung. [Hack #68], [Hack #69]

Philippe »BooK« Bruhat, Autor der Module HTTP::Proxy und Net::Proxy, lebtmit seiner Frau und seiner Katze in Lyon, Frankreich. Er ist ein aktives Mit-glied der französichen und europäischen Perl-Gemeinschaften. Er arbeitetefür O’Reilly Frankreich an den Übersetzungen von Programmieren mit Perl,3. Auflage und Perl Best Practices und publiziert Artikel im GNU/Linux Mag-azine France. Als Co-Entwickler von Act (A Conference Toolkit) und Mitgliedder YAPC Europe Foundation, hilft er bei der Organisation der europäischenPerl-Workshops und -Konferenzen, bei denen er als regelmäßiger Redner auf-tritt. Philippe würde sich freuen, wenn Sie sein Modul Acme::MetaSyntactic(wöchentlich aktualisiert) einmal ausprobieren. [Hack #18], [Hack #97]

Ricardo Signes hat sich eigentlich auf eine Karriere als Philosoph vorbereitet.Das plötzliche Einsetzen der industriellen Revolution zwang ihn jedoch dazu,sich mit einer gemeineren Form der Logik auseinander zu setzen. Er lebt inBethlehem, Pennysylvania und programmiert in Perl für Pobox.com. [Hack #8]

Sean M. Burke ist ein vollkommen normaler Mensch, basierend auf organi-schen Molekülen und mit der übliche Links-Rechts-Symmetrie. Alles ganztypisch. Er hat zwei O’Reilly-Bücher geschrieben: Perl and LWP und die RTFPocket Guide. Außerdem ist er Autor von mehreren Dutzend CPAN-Modulenund war für fünf Jahre als regelmäßiger Kolumnist für The Perl Journal tätig.(Seine Artikel erscheinen in den verschiedenen Best of the Perl Journal-O’Reilly-Büchern, insbesondere in Games, Diversions & Perl Culture.) Alsgelernter Linguist lebt er mittlerweile auf einer Insel im Südosten Alaskas, woer Werkzeuge für die Bewahrung nativer Sprachen entwickelt. WildenGerüchten zufolge findet sich seine Website unter der Adresse http://interglacial.com. [Hack #3], [Hack #6], [Hack #11]

Simon Wistow ist im Moment der Hüter von London.pm – der größten undrauflustigsten Perl Mongers-Gruppe. In seiner Freizeit schreibt er viel zu vieleCPAN-Module von zweifelhaftem Nutzen. [Hack #39]

Stephen B. Jenkins (a.k.a. Erudil) ist der Senior-Programmierer/Analytikerbeim Aerodynamics Laboratory des Institute for Aerospace Research, Natio-nal Research Council of Canada. Er schrieb für das Dr. Dobb’s Journal, LinuxJournal, The Perl Journal, die USENIX Association, das American Institute of

Page 13: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Credits | XIII

Aeronautics and Astronautics, das Aerospace and Electronics Systems Societyof the IEEE und die Association for Computing Machinery. Weitere Informa-tionen finden Sie unter http://www.Erudil.com. [Hack #101]

Tim Allwine ist ein Senior Software Engineer bei O’Reilly Media, Inc. Er ent-wickelt Software für die Marktforschungsabteilung, schreibt verschiedeneSpider-Werkzeuge, die Daten von verschiedenen Sites einsammeln und istmit der Entwicklung vom Web Services bei O’Reilly beschäftigt. [Hack #71]

Tom Moertel ist ein regelmäßiger Mitarbeiter bei den Pittsburgh Perl Mon-gers. Er ist der Entwickler von Test::LectroTest, einem spezifikationsbasier-ten Testsystem für Perl und von PXSL (»pixel«), einer praktischen Kurzschriftzum Erzeugen von Markup-lastigen XML-Dokumenten. Er ist außerdem derAutor von The Coder’s Guide to Coffee, einem präzisen Leitfaden zum besse-ren Verständnis des am häufigsten missverstandenen Lieblingsgetränks derProgrammierer. Er lebt in Pittsburgh, Pennysylvania, wo er eine kleine Unter-nehmensberatung hat, die sich auf das Lösen schwieriger Softwareproblemespezialisiert. Mehr über seine Projekte, Interessen – unter anderem Espressound funktionale Programmierung – finden Sie unter http://blog.moertel.com.[Hack #61]

Brett Warden, BSEE, hat sich auf Perl-Programmierung und eingebetteteTelekommunikationssysteme spezialisiert. Er lebt mit seiner Frau und seinemSohn im Nordwesten der USA. Eine Sammlung seiner seltsamen Projekte fin-den Sie unter http://www.wgz.com/bwarden. Sein Perl Monks-Benutzernameist isotope. [Hack #42]

DanksagungenDie Autoren möchten ihrer Lektorin Allison Randal für die Begleitung undFührung beim Entstehungsprozess dieses Buches und für das Ausbügeln derganzen Details, die nicht mit dem Schreiben zu tun haben, danken. Außer-dem gilt der Dank den Produktions-, Marketing- und Business-Abteilungenbei O’Reilly Media, die dieses Buch von einer Klartext-Version in die schöne,gedruckte Form gebracht haben, die Sie jetzt in der Hand halten.

Vielen Dank auch an Nathan Torkington, der geholfen hat, diesen Prozess insRollen zu bringen.

chromaticMein Dank gilt in erster Linie meinen Co-Autoren, zwei feinen Programmie-rern. Es ist für mich ein Privileg, sie als Kollegen, Freunde und auch als Mitar-beiter zu haben. Ohne sie wäre dieses Buch wesentlich kürzer, lange nicht sointeressant und würde nicht halb so viel Spaß machen. Danke auch an meine

Page 14: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

XIV | Credits

Freunde, Familie und die anderen Mitleidenden – besonders an die U of PCrew und Aleatha, Esther, Eva, Kate, Katie, Laura und Mel. Mein Dank undRespekt gelten meinen Arbeits- und Hobbykollegen, inklusive aller Program-mierer, die diese Werkzeuge erfunden und weiterentwickelt haben, die unsdas Arbeiten und Spielen erst ermöglichen.

Abschließend möchte ich dieses Buch meiner Familie widmen: Brett, Dani-elle, Jacob, Jack und Brad. Dies geschieht in der Hoffnung, dass ich ein wür-diger Bruder, Schwager, Onkel und Katzen-Sitter bin.

Damian ConwayDanke an chromatic, Allison und Nat für ihre Einladung, beim Errichten die-ses wunderbaren Perl-Abenteuerspielplatzes mitzuhelfen. Außerdem bedankeich mich bei Larry Wall, der diese außergewöhnlichen Spielwiese, auf der dasGanze steht, erfunden hat. Mein Dank geht auch an die vielen, vielen Freundein der weltweiten Perl-Gemeinschaft, durch deren Ermunterungen und Unter-stützung ich hier die letzten zehn Jahre spielen durfte.

Vor allem möchte ich meiner geliebten Linda danken. Ihre Liebe, Schönheitund Anmut bringen Licht in jeden Tag meines Lebens.

Curtis »Ovid« PoeIch wäre auf keinen Fall an diesem Projekt beteiligt, ohne dass die Perl-Gemeinschaft so viele meiner albernen Fragen beantwortet hätte, als ich vorvielen Jahren Perl gelernt habe. Sie haben mir nicht nur Perl beigebracht, son-dern mich zu einem Programmierer gemacht. Vielen Dank an chromatic undAllison für die Mithilfe beim Besiegen meines inneren Schweinehundes. Daswerde ich euch niemals verzeihen. Am meisten danke ich jedoch Sean und Lil– zwei Menschen, ohne die die Welt für mich lange nicht so schön wäre.

Technische SachverständigeDie Autoren bedanken sich besonders bei den technischen Sachverständigen,die viele Fehler gefunden haben, bessere Formulierungen vorgeschlagenhaben und sich über wichtige Formatierungsdetails gestritten haben, um die-ses Buch so klar, akkurat und interessant zu machen wie möglich. Nament-lich sind dies Ann Barcomb, Daniel Bosold, Brad Bowman, Philippe »BooK«Bruhat, die Leute aus dem IRC-Kanal #cgiapp, Chris Dolan, Michael Gra-ham, Garick Hamlin, Joshua ben Jore, Yves Orton, Ricardo Signes und DavidWheeler.

Page 15: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

| XV

0

Vorwort

Perl ist eine Sprache mit einem reichhaltigen und ausdrucksstarken Vokabu-lar. Bei seiner ersten Veröffentlichung im Jahre 1987 war Perl hauptsächlicheine Sprache für »Schnell-mal-eben«-Lösungen zum Extrahieren von Datenund Erstellung von Berichten. Mittlerweile hat Perl einen festen Platz in derWebentwicklung, bei der Datenverarbeitung, der Erstellung von GUIs, derAutomatisierung und Verkettung mehrerer Arbeitsprozesse und der Entwick-lung ausgewachsener Applikationen. Perl ist das Universalklebeband für dasInternet und eine Schweizer Armeekettensäge.

Wie mit Klebeband und Multi-Tools können Sie mit Perl so ziemlich allestun, was Sie sich vorstellen können und tatsächlich tun wollen.

Wenn Sie nur schnell mal einen Job erledigen wollen, können Sie den sim-pelsten Perl-Code schreiben, der Ihnen gerade einfällt, und dann mit denanderen Aufgaben weitermachen. Wenn Sie große Programme erstellen wol-len, können Sie – mit einiger Erfahrung und etwas Disziplin – auch das. WennSie bei der Problemlösung nichts gegen ein wenig Hilfe haben, finden Sie imCPAN vermutlich die richtigen Werkzeuge.

Das ist alles sehr produktiv, was fast schon eine Erfüllung für sich ist – Perlkann aber sogar richtig Spaß machen!

Stellen Sie sich einen Wurf kleiner Katzen vor, die in einem Ballen aus Klauen,Fell und Miauen auf dem Boden herumtollen. Sicher spielen sie; gleichzeitigüben sie aber auch die Fertigkeiten zum Überleben in der Furcht erregendenwilden Welt. Dabei achten sie darauf, sich nicht gegenseitig zu verletzen. DieTaktiken und Überraschungen eines Katzenbabys können den anderen wert-volle Lektionen erteilen.

Wie wird man ein Perl-Guru? Teilweise ist es das Wissen, hauptsächlich ist esaber die Neugier, mit der Sprache zu spielen, Überraschendes zu entdeckenund selbst ein paar neue zu erfinden. Und das ist auch der Grund, warum es

Page 16: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

XVI | Vorwort

so viel Spaß gemacht hat, dieses Buch zu schreiben. Sie finden hier 101 Tipps,Tricks und Techniken der besten Perl-Programmierer der Welt. Einige kön-nen sofort eingesetzt werden, andere funktionieren eher »von hinten durchdie Brust ins Auge« – aber sie funktionieren, wenn Sie keine andere Wahlhaben. Die meisten Hacks in diesem Buch bestehen aus zwei Teilen: demeigentlich zu lösenden Problem und einer tieferen und subtileren Technik, diesich auch auf andere Situationen anwenden lässt. Alle hier vorgestellten Tech-niken sind es wert, eingehender studiert zu werden.

Produktiv zu sein ist gut. Deshalb programmieren Sie schließlich in Perl.Wenn Sie dann noch den Lernspaß dazunehmen – besonders bei den Lektio-nen, für die unsere Autoren selbst Jahre gebraucht haben, um sie zu lernen –können Sie fast alles schaffen. Überraschen Sie Ihre Freunde, erstaunen SieIhre Mitarbeiter. Brechen Sie auf in die undurchdringliche Welt des Codes,der Spezifikationen und Kundenwünsche, in der Gewissheit, dass Sie jedesProblem, das Sie anspringt, in den Griff bekommen.

Das werden Sie nämlich.

Warum heißt dieses Buch Perl Hacks?Das Wort Hacker hat in der Presse einen eher unglücklichen Ruf. Dort stehtes für jemanden, der in Rechnersysteme einbricht oder mit Computern alsWaffe Unheil stiftet. Unter Programmierern bedeutet ein Hack dagegen eineschnell zusammengebaute Lösung für ein Problem oder eine schlaue Art, einegestellte Aufgabe zu erledigen. Das Wort Hacker ist in diesem Zusammen-hang auch eher ein Kompliment, steht also für jemanden, der kreativ ist unddie nötigen technischen Kenntnisse hat, um seine Sache zu erledigen. DieHacks-Buchreihe ist ein Versuch, dieses Wort wieder mit seiner korrektenKonnotation zu versehen. Zu diesem Zweck dokumentieren wir, wie man aufpositive Weise hacken kann, und versuchen, die Hacker-Tugend der kreati-ven Teilnahme an die noch nicht Eingeweihten weiterzugeben. Oft lernen Sieeine neue Technologie am schnellsten wenn Sie dabei zusehen, wie andere andie Systeme und Probleme herangehen.

Außerdem macht es Spaß.

Natürlich kann kein einzelnes Buch sämtliche interessanten, kreativen undbewusstseinserweiternden Dinge dokumentieren, die man mit Perl tun underreichen kann. Dennoch hoffen wir, dass dieses Buch Sie in die richtige Stim-mung versetzt, um Ihre eigenen verrückten Ideen zu hacken.

Page 17: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Vorwort | XVII

Die Benutzung dieses BuchsWir haben dieses Buch in verschiedene Themen unterteilt, aber nicht nachrelativen Schwierigkeitsgraden. Springen Sie ruhig hin und her und stöbernSie in diesem Buch herum. Wenn Sie eine interessante Überschrift sehen oderein bestimmter Absatz interessant erscheint, lesen Sie ihn! Soweit es uns mög-lich war, haben wir im Text Querverweise auf verwandte Stellen platziert.Wenn Sie und Ihre Mitarbeiter beispielsweise an einem faulen Freitagnach-mittag »Bier Uhr dreißig« feiern, fangen Sie vielleicht am besten mit »Auf dasWohl von CPAN!« [Hack #37] an.

Wie dieses Buch aufgebaut istKapitel 1, Hacks zur Steigerung der Produktivität

Geben Sie es zu. Wenn Sie sich hinsetzen, um Code zu schreiben, gibt esimmer irgendwas, das nervt. Vielleicht sind das sich ständig wiederho-lende Befehle, das Nachschlagen in der Dokumentation oder die Tatsa-che, dass Ihre Mitarbeiter ihre Gleichheitszeichen einfach nichtuntereinander schreiben können. Ohne diese Störungen und Unterbre-chungen wären Ihr Leben und Ihre Programmiersitzungen wesentlicheinfacher. In diesem Kapitel finden Sie einige Ideen dazu.

Kapitel 2, Benutzer-InteraktionEs gibt verschiedene Arten, wie Programme auf sich aufmerksammachen: Menüs, Grafiken, Signaltöne und Kommandozeilen sind einpaar davon. In diesem Kapitel geht es um die Arbeit mit anderen Men-schen. Seien Sie dabei freundlich, stilvoll und bequem.

Kapitel 3, DatenbearbeitungWelche Dinge extrahiert Perl am liebsten? Worüber gibt es besondersgerne Berichte aus? Daten! Spannen Sie Perl vor Ihre Datenbank und las-sen Sie es auf Ihre Dateien los. Es ist so einfach, dass Sie möglicherweisenicht einmal merken, dass Ihr Code eigentlich langsam und klumpig ist.Wenn Sie sich die Tipps aus diesem Kapitel zu Herzen nehmen, könnenSie Ihr Perl so aufpolieren, dass die Daten sich fast schon von selbst ver-arbeiten.

Kapitel 4, ModulePerls Maßeinheit für wiederverwendbaren Code ist das Modul. Wenn Siedie Macht der Module für sich nutzbar machen – egal ob Sie oder anderesie geschrieben haben –, sind Sie auf dem Weg, ein echter Guru zu wer-den. Dafür müssen Sie den Gedanken »eine Datei, ein Namensraum, einModul« hinter sich lassen. Sie müssen verstehen, wie Module funktionie-ren und welche schlauen Möglichkeiten sie bieten. Dieses Kapitel zeigtIhnen den Weg.

Page 18: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

XVIII | Vorwort

Kapitel 5, Objekt-HacksAbstraktion, Kapselung und die Möglichkeit, Dinge gegeneinander aus-zutauschen, sind die Schlüssel für die Entwicklung großer und wartbarerSysteme. Das geht zum Beispiel mit Objekten. Zwar behaupten einigeLeute, dass Perl nicht wirklich objektorientiert ist. Diese Leute habenUnrecht und Sie können das beweisen. In diesem Kapitel finden SieWege, mächtige Abstraktionen zu erstellen, die weit über die mit blessmarkierten Hashes hinausgehen.

Kapitel 6, DebuggingSelbstverständlich funktioniert Ihr Code schon irgendwie. Eines Tageswerden Sie sich aber durch einen Haufen Perl-Code graben dürfen, denIhnen ein ziemlich unangenehmer Mitarbeiter hinterlassen hat. (Das kön-nen auch Sie selbst sein, bevor Sie dieses Buch gelesen haben.) Gehen Sienicht unbewaffnet in diese Schlacht. Bereiten Sie sich mit einem Werk-zeugkasten voller Tipps und Techniken auf das Schlimmste vor, um auchden haarigsten und eigenartigsten Code, den Sie sich vorstellen können,in die Knie zu zwingen. Dieses Kapitel wirft Licht auf die Monster, diesich überall verstecken (aber Sie werden merken, dass sie gar nicht soschrecklich sind, wenn Sie sie einmal persönlich kennen gelernt haben).

Kapitel 7, EntwicklertricksDie Wartung eines Programms unterscheidet sich von der Wartung eineskompletten Systems. Das trifft vor allem zu, wenn Sie mit anderen Leutenzusammenarbeiten, wenn Disziplin und Beständigkeit besonders wichtigsind. Das gilt natürlich auch, wenn Sie eine gute Möglichkeit suchen,Leute davon zu überzeugen, das Richtige zu tun. Wenn Sie Ihre Entwick-lungen in Schwung bringen wollen, finden Sie in diesem Kapitel Antwor-ten.

Kapitel 8, Kenne deinen CodeDie Inschrift lautete: »Erkenne dich selbst.« Dies ist allerdings das Orakelvon Perl und nicht von Delphi, daher ist der Rat etwas anders gemeint.Wenn Sie tatsächlich die tieferen Mysterien von Perl für sich nutzen wol-len, müssen Sie einen tiefen Blick in die Sprache, die Bibliotheken, sogarden Interpreter selbst – und natürlich auch um Ihren eigenen Code – wer-fen, zu verstehen, was da passiert. In diesem Kapitel werden Sie vom Pro-grammierer zum Guru. Bleiben Sie dran.

Kapitel 9, Erweitern Sie Ihr Perl FooWenn Ihnen die Phrase »Perl Fu« noch nicht metasyntaktisch genug ist,ist es vielleicht an der Zeit, zu »Perl Foo« zu wechseln. Es gibt kaumjemanden, der jeden Winkel von Perl erforscht hat. Es gibt einfach zu viel

Page 19: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Vorwort | XIX

zu lernen. Bis jetzt wurde das Gebiet jedoch noch nicht kartografiert. Indiesem Kapitel werden wir Ihnen ein paar der seltsameren Ideen aus derPerl-Welt in den Kopf setzen. Danach werden Sie bereit sein, selbst aufEntdeckungsreise zu gehen.

Typografische KonventionenDieses Buch verwendet die folgenden typografischen Konventionen:

NormalschriftWird verwendet für Menü-Überschriften, Menü-Optionen und Menü-Buttons.

KursivschriftWird verwendet für neue Begriffe, URLs, E-Mail-Adressen, Dateinamen,Dateiendungen, Pfadnamen und Verzeichnisse.

NichtproportionalschriftWird verwendet für Befehle, Optionen, Switches, Variablen, Attribute,Schlüssel, Funktionen, den Inhalt von Dateien und die Ausgabe vonBefehlen.

Nichtproportionalschrift fettSteht für Befehle und anderen Text, die bzw. den Sie wörtlich eingebenmüssen.

Nichtproportionalschrift kursivSteht für Text, der durch Benutzereingaben ersetzt werden soll.

Graue SchriftDie zweite Farbe wird zur Kennzeichnung eines Querverweises innerhalbdes Textes eingesetzt.

Hierbei handelt es sich um einen Ratschlag, eine Anregungoder eine allgemeine Anmerkung.

Hierbei handelt es sich um eine Warnung oder einen Warn-hinweis.

Die Thermometer-Symbole neben den Hacks stehen für die relative Kom-plexität:

leicht mittel schwer

Page 20: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

XX | Vorwort

Benutzung der CodebeispieleDieses Buch soll Ihnen bei Ihrer Arbeit helfen. Es ist allgemein erlaubt, denCode in diesem Buch in Ihren Programmen und Dokumentationen zu ver-wenden. Hierfür ist es nicht notwendig, uns um Erlaubnis zu fragen, es seidenn, es handelt sich um eine größere Menge Code. So ist es beim Schreibeneines Programms, das einige Codeschnipsel dieses Buchs verwendet, nichtnötig, sich mit uns in Verbindung zu setzen; beim Verkauf oder Vertrieb einerCD-ROM mit Beispielen aus O’Reilly-Büchern dagegen schon. Das Beant-worten einer Frage durch das Zitat von Beispielcode erfordert keine Erlaubnis.Verwenden Sie einen erheblichen Teil der Beispielcodes aus diesem Buch inIhrer Dokumentation, ist dagegen unsere Erlaubnis nötig.

Eine Quellenangabe ist zwar erwünscht, aber nicht notwendig. Hierzu gehörtin der Regel die Erwähnung von Titel, Autor, Verlag und ISBN. Zum Beispiel:»Perl Hacks von chromatic, Damian Conway und Curtis ›Ovid‹ Poe. O’ReillyVerlag 2006, ISBN 3-89721-474-1«.

Falls Sie nicht sicher sind, ob die Nutzung der Codebeispiele außerhalb derhier erteilten Erlaubnis liegt, nehmen Sie bitte unter der Adresse [email protected] Kontakt mit uns auf.

Page 21: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

| 1

Kapitel 1 K A P I T E L E I N S

Hacks zur Steigerung derProduktivität

Hacks 1–11

Jeder möchte gerne produktiver sein. Deshalb benutzen Sie vermutlich auchPerl: um mit weniger Aufwand in kürzerer Zeit mehr Arbeit erledigen zu kön-nen.

Wenn wir von Produktivität sprechen, geht es aber nicht immer um eine mög-liche Zeitersparnis. Es ist mindestens genauso wichtig, den Arbeitsaufwandklein zu halten; ob es dabei um das Auffinden der richtigen Informationengeht oder um eine Möglichkeit, sich nicht ständig mit Routineaufgabenbeschäftigen zu müssen. Auf eine Art geht es hier um das Konzept der gnaden-losen Automatisierung –þdas Aufspüren all der kleinen, mühsamen und lästi-gen Aufgaben und ihr anschließendes Verbergen hinter einem Alias, einemShell-Skript oder etwas ganz anderem.

In diesem Kapitel finden Sie ein paar Tipps, mit denen Sie Ihr Programmierer-leben ein wenig leichter und produktiver gestalten können. Probieren Sie sieaus und genießen Sie die hinzu gewonnene Freizeit. Erkennen Sie die neuenReibungspunkte, die nun in Ihr Leben treten. Und lösen Sie auch diese.

H A C K

#1Schnellerer CPAN-Zugriff mit den dynamischen Lesezeichen von Firefox Hack #1

Mit nur wenigen Tastendrücken können Sie auf Moduldokumentationen und Distributionen zugreifen.

Ein wesentlicher Vorteil von Perl gegenüber anderen Programmiersprachenbesteht in der großen Anzahl von Modulen, die im CPAN (http://www.cpan.org/) zur Verfügung stehen und mit denen sehr viele Probleme äußerst effektivgelöst werden können. Diese Vielfalt bringt allerdings ein kleines Problem mitsich – das für Ihre Aufgabe passende Modul zu finden.

Die CPAN-Suchmaschine http://search.cpan.org/ ist an sich bereits eine großeHilfe. Wenn Sie die Site allerdings mehrmals am Tag besuchen, kann die Ein-

Page 22: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

2 | Kapitel 1: Hacks zur Steigerung der Produktivität

#1 Schnellerer CPAN-Zugriff mit den dynamischen Lesezeichen von FirefoxHACK

gabe von Suchbegriffen über die Webschnittstelle schnell nervig werden.Glücklicherweise können Sie in den Browsern der Mozilla-Familie (inklusiveMozilla Firefox) so genannte Shortcuts einrichten, die das Browsen erheblichvereinfachen können. Shortcuts sind im Prinzip einfache Lesezeichen, indenen bestimmte Abschnitte und Schlüsselwörter ersetzt werden können;dennoch sind sie sehr mächtig und nützlich – fast so wie Aliase auf der Kom-mandozeile (»Shell-Aliase effektiv nutzen« [Hack #4]), nur eben für den Browser.

Hier die drei nützlichsten Shortcuts:

Nach einem Modul suchenDie erste Technik besteht darin, das gewünschte Modul zu finden. Normaler-weise würden Sie die CPAN-Suchseite aufrufen, die passenden Begriffe in dasTextfeld eingeben, das Formular abschicken und dann die Ergebnisse durch-stöbern. Das ist aber viel zu viel Arbeit!

Öffnen Sie das Lesezeichen-Menü. Bei Mozilla Firefox finden Sie das Menüunter Lesezeichen ➝ Lesezeichen-Manager. Legen Sie ein neues Lesezeichenan. Überlegen Sie sich einen passenden Namen, zum Beispiel CPAN-Suche, undein entsprechendes Schlüsselwort wie cpan. In das Adressfeld geben Sie Fol-gendes ein:

http://search.cpan.org/search?mode=module;query=%s

In Abbildung 1-1 sehen Sie die bereits ausgefüllte Dialogbox. Klicken Sie aufOK und gehen Sie wieder zurück zum Browserfenster. Löschen Sie den Inhalt

Abbildung 1-1: Eine neues Lesezeichen für eine Schlüsselwort-Suche anlegen

Page 23: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Schnellerer CPAN-Zugriff mit den dynamischen Lesezeichen von Firefox #1

Hack #1: Schnellerer CPAN-Zugriff mit den dynamischen Lesezeichen von Firefox | 3

HACK

des Adressfelds, geben Sie cpan Acme ein und drücken die Enter-Taste.Dadurch landen Sie direkt auf der ersten Seite mit Suchbegriffen für Modulemit dem Begriff im Namen.

Moduldokumentation lesenWenn Sie den exakten Namen des gewünschten Moduls kennen, ist es beque-mer, direkt zu den Informationen über dieses Modul springen zu können.Legen Sie ein neues Lesezeichen namens Moduldokumentation zeigen an. Einpassendes Schlüsselwort wäre in diesem Fall vielleicht cpod. Der Shortcut lau-tet:

http://search.cpan.org/perldoc/%s

Klicken Sie auf OK und geben Sie anschließend cpod Test::Builder in dasAdressfeld ein. Wenn Sie die Enter-Taste drücken, wird die aktuellste Versionder Test::Builder-Dokumentation angezeigt.

Offenbar funktioniert diese Methode nicht für Module, dieausschließlich POD enthalten, wie Test::Tutorial. DenkenSie auch daran, dass die Groß- und Kleinschreibung derModulnamen genau übereinstimmen muss.

Kommentare zu Modulen findenManchmal ist der Rat anderer Leute zu einem Modul wertvoller als desseneigentliche Dokumentation. Dies ist vor allem der Fall, wenn Sie einen Pro-grammierfehler finden oder sich ein bestimmtes Verhalten durch die Doku-mentation nicht erklären lässt. Das AnnoCPAN-Projekt (http://www.annocpan.org/) ist eine öffentliche Website, auf der Benutzer die Dokumenta-tionen beliebiger CPAN-Module mit Kommentaren versehen können. Dies isteine gute Möglichkeit, Ihr hart erarbeitetes Wissen über ein Modul mit derWelt zu teilen.

Legen Sie auch dieses Mal ein neues Lesezeichen an und nennen Sie esAnnoCPAN-Moduldokumentation mit dem Schlüsselwort apod. Als Adresse ver-wenden Sie:

http://www.annocpan.org/?mode=search;field=Module;latest=1;name=%s

Speichern Sie das Lesezeichen, geben Sie im Adressfeld des Browsers apodGraphViz ein und drücken Sie die Enter-Taste. Wenn Sie ein paar Bildschirm-seiten nach unten scrollen, sollten Sie Anmerkungen zu verschiedenen Absät-zen der Dokumentation sehen.

Page 24: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

4 | Kapitel 1: Hacks zur Steigerung der Produktivität

#2 Die Möglichkeiten von perldoc ausschöpfenHACK

Den Hack hackenDie Schlüsselwortsuche von Firefox verwandelt die Adresszeile Ihres Brow-sers in eine Kommandozeile. Es ist einfach, ein eigenes CGI-Skript oder einenmod_perl-Handler zu schreiben, um den Browser mit einem neuen Befehl zuerweitern. Das Skript bzw. der Handler muss nur einen Query-String bereit-stellen und Informationen zurückgeben. Code, der mit einem einzigen Befehlbestimmte Informationsquellen zusammenfasst (z.B. indem er die JavaScript-,HTML- und Perl-Dokumentation mit nur einer Abfrage durchsucht), lässtsich ebenfalls leicht schreiben.

Die URL des Lesezeichens könnte eine javascript:-Adresse sein, die denCode im Browser ausführt. Im Prinzip legen Sie ein Bookmarklet an, das Sieüber die Kommandozeile ansprechen. Sie könnten JavaScript beispielsweiseverwenden, um die Suchergebnisse in einem neuen Fenster oder Tab darzu-stellen oder um nach dem gegenwärtig ausgewählten Text zu suchen.

H A C K

#2Die Möglichkeiten von perldoc ausschöpfen Hack #2

Begnügen Sie sich nicht mit dem Lesen der Dokumentation.

Über das Utility perldoc stellt Perl eine riesige Menge an Dokumentation zurVerfügung – und das nicht nur über die Kommandozeile. Diese Dokumentedecken so ziemlich alles ab: vom Kern der Sprache und Anleitungen über dieStandard-Bibliothek bis hin zu Modulen, die Sie zusätzlich installieren kön-nen oder womöglich sogar selbst geschrieben haben. perldoc kann aber nochmehr.

Hier finden Sie ein paar Switches und Optionen, mit denen Sie Ihre Produkti-vität steigern können.

Dokumentation zu Operatoren findenDas Dokument perlfunc enthält eine Liste aller eingebauten Operatoren derSprache in alphabetischer Reihenfolge. Wollen Sie beispielsweise die Reihen-folge der Argumente für substr( ) wissen, so könnten Sie den Befehl perldocperlfunc eingeben und dann nach dem richtigen Vorkommen von substrsuchen.

In einem vernünftigen Pager-Programm wie less unter Unix-artigen Systemen können Sie durch die Eingabe des Schräg-strichs (/) eine Suche auslösen. Geben Sie den Rest desNamens ein und drücken Sie die Enter-Taste, um die Suche zubeginnen. Die Eingabe von n findet das nächste Vorkommendes Suchbegriffs, N das vorherige.

Page 25: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Die Möglichkeiten von perldoc ausschöpfen #2

Hack #2: Die Möglichkeiten von perldoc ausschöpfen | 5

HACK

Aber warum alles von Hand machen, wenn der -f-Switch von perldoc dasperlfunc-Dokument für Sie durchsuchen kann? Dabei wird nur die Doku-mentation für den angegebenen Operator angezeigt. Verwenden Sie denBefehl:

$ perldoc -f substr

startet perldoc Ihr Pager-Programm und zeigt nur die Dokumentation fürsubstr. Ganz schön praktisch, was?

Antworten auf häufig gestellte Fragen (FAQs) findenDie Perl-FAQ ist ein sehr nützlicher Teil von Perls Kerndokumentation. Siebesteht aus dem Inhaltsverzeichnis perlfaq und neun weiteren Dokumenten(perlfaq1 bis perlfaq9), voll mit häufig gestellten Fragen und den dazugehö-rigen Antworten.

Das Durchsuchen aller Dokumente nach der richtigen Antwort ist aber nochmühsamer als eine Suche in perlfunc. (Werfen Sie trotzdem gelegentlicheinen Blick in perlfaq, um zu sehen, welche Fragen beantwortet wurden.)Glücklicherweise können Sie über den -q-Switch ein Suchmuster für FAQ-Schlüsselwörter angeben.

Wenn Sie sich daran erinnern, dass irgendwo in der FAQ erklärt wird, wieman die Elemente eines Arrays mischt, aber nicht mehr genau wissen, wo,versuchen Sie es einmal mit der Eingabe:

$ perldoc -q shuffle

Wie beim -f-Switch wird dadurch Ihr Pager-Programm aufgerufen, und alleFAQ-Einträge mit dem Wort shuffle im Titel werden angezeigt.

-q kann auch mit regulären Ausdrücken umgehen. Wenn Sie beispielsweisenach jedem Vorkommen von Perl 6 suchen wollen, ob mit oder ohne Leerzei-chen dazwischen, versuchen Sie es einmal mit:

$ perldoc -q "Perl ?6"

Die Anführungszeichen verhindern, dass die Shell das Leerzei-chen als Trennzeichen für Argumente ansieht.

Dokumentation in HTML umwandelnVielleicht ist die Kommandozeile nicht ganz Ihr Ding. Vielleicht arbeiten Siemit einer Gruppe von Programmierern, die ihre bequemen IDEs nicht extraverlassen wollen, um ein paar Befehle einzugeben, und die die Dokumenta-tion mit Sicherheit nur in der IDE oder auf einer Webseite lesen.

Page 26: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

6 | Kapitel 1: Hacks zur Steigerung der Produktivität

#2 Die Möglichkeiten von perldoc ausschöpfenHACK

Auch das ist in Ordnung, denn perldoc kann HTML-Code erzeugen (oderauch beliebige andere Arten von Ausgaben, sofern der nötige POD-Überset-zer installiert ist). Verwenden Sie -o in Ihrem bevorzugten Ausgabeformat.Um die Informationen von perltoc als HTML auszugeben, verwenden Sieden Befehl:

$ perldoc -oHTML -dperltoc.html perltoc

Der Switch -d gibt den Namen der Zieldatei an.

Gültige HTML-Formatierer sind unter anderem Pod::Perldoc::HTML, Pod::Simple::HTML und Pod::HTML. Wenn Sie einen anderen Formatierer mit dempassenden Namen installiert haben, können Sie auch diesen benutzen.

Haben Sie mehrere mögliche Formatierer für ein bestimmtesAusgabeformat installiert, verwenden Sie -MkompletterMo-dulname anstelle von -o, um Klarheit zu schaffen.

Das richtige Modul findenVielleicht kennen Sie sich mit der Verwendung der Dokumentation auchschon richtig gut aus, haben aber ein Programm, das die falsche Version einesModuls lädt. In einem solchen Fall können Sie das Programm zwar anweisen,die Inhalte von %INC und @INC anzuzeigen, und sich dann mühsam durch dieAusgaben hangeln, um den Fehler zu finden. perldoc muss aber in der Lagesein, den Speicherort eines Moduls zu finden, um dessen Dokumentationanzuzeigen. Machen Sie sich das ruhig zunutze!

Der Switch -l (der Buchstabe l ist hier gemeint) weist perldoc an, das angege-bene Modul (oder Dokument) zu finden und dessen Speicherort auszugeben,anstatt den enthaltenen Text zu formatieren und darzustellen. In unseremBeispiel haben wir das einmal mit Test::Tutorial und perluniintro gemacht:

$ perldoc -l Test::Tutorial/usr/lib/perl5/vendor_perl/5.8.7/Test/Tutorial.pod

$ perldoc -l perluniintro/usr/lib/perl5/5.8.7/pod/perluniintro.pod

Wenn Sie mehr als eine Version von Perl installiert haben,müssen Sie dafür sorgen, dass Sie auch die richtige Versionvon perldoc verwenden, denn es wird nur das Array @INC dereigenen Perl-Version verwendet.

Page 27: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Die Perl-Dokumentation online lesen #3

Hack #3: Die Perl-Dokumentation online lesen | 7

HACK

Diese Vorgehensweise kann wesentlich schneller sein als die Verwendung vonlocate oder find und grep von der Kommandozeile.

Den Quellcode durchstöbernperldoc -l ist besonders nützlich, wenn Sie wissen möchten, wo sich einModul befindet, damit Sie einen Blick auf dessen Innereien werfen können.Mit der Option -m können Sie sich den unformatierten Klartext eines Modulsin Ihrem Pager-Programm ausgeben lassen.

Wenn Sie vermuten, dass der Autor von Test::MockObject ein paar nützlicheMethoden vor Ihnen versteckt hat1, dann können Sie sich mit folgenderAnweisung den Quellcode ausgeben lassen:

$ perldoc -m Test::MockObject

Sie können zwar auf diese Weise den Quellcode eines Moduls nicht editieren,aber die Möglichkeit, den rohen Quell-Code eines Moduls zu lesen, kanntrotzdem nützlich sein – besonders wenn die Formatierung durch Fehler imPOD fehlschlägt.

Auf ähnliche Weise zeigt die Option -u den unformatiertenPOD-Code an.

H A C K

#3Die Perl-Dokumentation online lesen Hack #3

Stellen Sie die Perl-Dokumentation selbst im HTML-Format zur Verfügung.

Die Verwendung von perldoc ist eine schöne Möglichkeit, die Dokumenta-tion zu Perl und der installierten Module anzusehen und sie in beliebigenDateiformaten auszugeben (»Die Möglichkeiten von perldoc ausschöpfen«[Hack #2]). podwebserver ist der kleine Bruder von perldoc und eine noch prakti-schere Art, die Dokumentation zu durchstöbern. Damit können Sie Lesezei-chen anlegen, die Dokumentation durchsuchen und sie gelegentlich sogarausdrucken – und das alles mit Ihrem Webbrowser der Woche.

Der Hackpodwebserver stellt sozusagen eine Art perldoc-im-HTML-Format über HTTPzur Verfügung. Selbstverständlich können Sie die Dokumentation auch unterhttp://search.cpan.org/ betrachten; die Verwendung von podwebserver hatallerdings den Vorteil, dass Sie die Dokumentation für genau die Perl-Version

1 Hat er nicht.

Page 28: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

8 | Kapitel 1: Hacks zur Steigerung der Produktivität

#3 Die Perl-Dokumentation online lesenHACK

und diejenigen Modulversionen sehen können, die auf Ihrem System instal-liert sind.

Der von podwebserver erzeugte HTML-Code wird sowohl von hoch entwi-ckelten Browserprogrammen verstanden wie auch von leichtgewichtigenWerkzeugen wie lynx, elinks oder sogar dem w3m-Browser unter Emacs. Esgibt sogar Gerüchte von Benutzern, die per Mobiltelefon auf podwebserverzugreifen oder mit Dingen, die »Der winzig-weiche Zwischennetz-Erforscher«heißen. O’Reilly kann diese Gerüchte weder bestätigen noch dementieren.

Ist podwebserver auf Ihrem System nicht vorhanden, müssen Sie zuerst dasModul Pod::Webserver aus dem CPAN installieren.

Den Hack ausführenpodwebserver wird von der Kommandozeile aus gestartet. Dafür benötigen Sienicht einmal root-Rechte.

$ podwebserver

Starten Sie einen Webbrowser und geben Sie die Adresse http://localhost:8020/ ein. Wie in Abbildung 1-2 zu sehen ist, wird nun ein Index der instal-lierten Dokumentation angezeigt.

Falls Sie den Webserver nicht an localhost binden möchten oder auf Port8020 bereits ein anderes Programm läuft, können Sie mit der Option -H den

Abbildung 1-2: Ein Index Ihrer Perl-Dokumentation

Page 29: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

Shell-Aliase effektiv nutzen #4

Hack #4: Shell-Aliase effektiv nutzen | 9

HACK

Rechnernamen (Host) und mit -p den Port entsprechend Ihren Wünschenanpassen.

$ podwebserver -H windwheel -p 8080

Den Hack hackenExtra ein Programm zu starten und dann zum Webbrowser zu wechseln, umein Lesezeichen aufzurufen, ist zu viel Aufwand, wenn Sie nur mal kurz einenBlick in die Dokumentation werfen wollen. Mit einem kleinen Shell-Skript(»Shell-Aliase effektiv nutzen« [Hack #4]) können Sie sich das Leben erleichtern:

#!/bin/shpodwebserver &sleep 2firefox -remote 'openurl( http://localhost:8020/, new-tab)'

Speichern Sie das Programm als ~/bin/podweb, machen Sie es ausführbar(chmod +x ~/bin/podweb) und stellen Sie sicher, dass sich ~/bin/podweb in derUmgebungsvariable $PATH befindet. Danach können Sie es aufrufen:

$ podweb

Wenn Sie Mozilla Firefox geöffnet haben, wird durch diesen Befehl die Index-seite in einem neuen Tab dargestellt. Andere Webbrowser können auf ähnli-che Weise aufgerufen werden.

H A C K

#4Shell-Aliase effektiv nutzen Hack #4

Programmieraufgaben durch Shell-Programmierung erleichtern.

Perl ist eine Sprache für Leute, die gern tippen. Sie hat ihren Ursprung auf derShell, wird aber mittlerweile zum Schreiben aller möglichen Programme ein-gesetzt. Dennoch werden Leute, denen es nichts ausmacht, Programme vonder Kommandozeile zu starten, besonders belohnt.

Wenn Sie Ihre Zeit damit verbringen, Perl-Programme auf der Kommando-zeile zu schreiben (unabhängig davon, ob es kurze Skripten oder ausgewach-sene Programme sind), lohnt es sich, ein paar Minuten damit zu verbringen,häufige Aufgaben zu automatisieren. Auf diese Weise können Sie sich eineMenge Entwicklungszeit und einigen Ärger ersparen.

Die Shell konfigurierenDer nützlichste Shell-Trick von allen ist die Verwendung des Befehls realias.Normalerweise bedeutet die Erstellung eines dauerhaften Alias bestimmteAnpassungen in .bashrc (oder einer ähnlichen Datei), das Starten einer neuenShell, mindestens einen Testlauf und ein Wiederholen dieser Schritte, bis alles

Page 30: PERL Ausgabe HACKS€¦ · Tipps & Tools zum Programmieren, Debuggen und Überleben TM chromatic ... Freie und Open Source Software des O’Re illy Network zuständig ist. ... mehr

10 | Kapitel 1: Hacks zur Steigerung der Produktivität

#4 Shell-Aliase effektiv nutzenHACK

richtig läuft. Wäre es nicht schön, einen neuen Alias mit einem einzigen Pro-zess anlegen und testen zu können?

Erweitern Sie hierfür Ihre Datei .bashrc um die folgende Zeile:

source ~/.aliases

Legen Sie nun eine Datei namens ~/.aliases an. Diese sollte folgenden Inhalthaben:

alias realias='$EDITOR ~/.aliases; source ~/.aliases'

Wenn Sie lieber mit tcsh arbeiten, müssen die Änderungen in.cshrc vorgenommen werden. Ersetzen Sie dort in sämtlichenAlias-Deklarationen das Gleichheitszeichen (=) durch ein ein-zelnes Leerzeichen.

Starten Sie jetzt eine neue Shell. Geben Sie den Befehl realias ein, und die~/.aliases-Datei wird in Ihrem bevorzugten Editor geöffnet (vorausgesetzt, dieUmgebungsvariable EDITOR ist gesetzt, ansonsten ist etwas sehr seltsam).Fügen Sie eine neue Zeile hinzu und beenden Sie den Editor:

alias reperl='perl -de0'

Geben Sie nun den Befehl reperl2 auf der Kommandozeile ein:

$ reperl

Loading DB routines from perl5db.pl version 1.28Editor support available.

Enter h or 'h h' for help, or 'man perldebug' for more help.

main::(-e:1): 0 DB<1> q

Mit nur einer Shell-Sitzung haben Sie einen nützlichen Befehl angelegt, denman sich ansonsten nur schwer merken könnte, haben diesen automatisiertund sofort damit begonnen, ihn produktiv einzusetzen. Raffiniert.

Nützliche Shell-AliaseWas macht einen guten Shell-Alias aus? Offensichtlich ein Befehl, den mansich ansonsten nur schwer merken kann, wie derjenige zum Starten des Perl-Debuggers im pseudo-interaktiven Modus. Ein weiterer guter Ansatz bestehtdarin, Aliase für besonders lange Befehle anzulegen oder für solche, dieschwer einzugeben sind, oder auch verkettete Befehle, die Sie häufig eingebenmüssen.

2 Eine REPL-Version, die man auch aussprechen kann – Read, Evaluate, Print und Loop (lesen,auswerten, ausgeben und wiederholen).