Da ich gerade wieder eine Literatur-Liste für eine Perl-Schulung für einen Kunden zusammenstelle dachte ich mir: schreibe es doch gleich hier rein, dann ist es wiederverwendbar. Daher im folgenden meine Buch-Empfehlungen für Perl-Programmierer/Perl-Einsteiger (nicht nur) im Unternehmensumfeld.
Hinweis: die folgenden Links der Bücher gehen wenn möglich direkt zu Amazon, sind also rechtlich als Anzeige/Werbung zu verstehen ...
(Fast) alle Bücher sind von O'Reilly. Nicht, weil ich dem Verlag in irgendeiner Art verbunden wäre, sondern weil Perl-Bücher von O'Reilly überdurchschnittlich gut sind. Da merkt man, wer ein fachlich fundiertes Lektorat hat.
Die Buchtipps habe ich in die folgenden Kategorien eingeteilt (Link zum jeweiligen Abschnitt):
Perl lernen, Pflichtlektüre, Nachschlagewerke, Web-Entwicklung, Testing
Perl lernen
Die folgenden drei Bücher ergeben eine Einführung in Perl und sind gut als begleitendes Kursmaterial geeignet:
Einführung in Perl (das Lama-Buch) (Info beim Verlag)
von Randal L. Schwartz, Tom Christiansen und brian d foy
Vermittelt Basiswissen und ist für Einsteiger gut geeignet. Eine gute Einführung in Perl, aber eines habe ich zu kritisieren: use strict wird erst relativ spät erklärt. Aus gutem Grund ist das eines der ersten Sachen, die ich in meinen Perl-Kursen erwähne, schließlich sollte man sich gleich daran gewöhnen.
Eine englischsprachige 5. Auflage ist in Arbeit und soll im Juli kommen und die Neuigkeiten in Perl 5.10 behandeln; wann eine Übersetzung davon kommt weiss ich aber nicht.
Einführung in Perl beschreibt die Grundlagen: Variablen, Subroutinen, Ein- und Ausgabe, Reguläre Ausdrücke, Kontrollstrukturen und gibt einen Ausblick auf die Benutzung von Perl-Modulen und „Fortgeschrittenen“ Techniken. Ich empfehle es allen, die Perl lernen oder einen Enführungs-Kurs geben.
Intermediate Perl (Englisch) (Info beim Verlag)
von Randal L. Schwartz, brian d foy und Tom Phoenix
Der zweite Teil der Perl-Einführungs-Serie ist (bisher?) nur auf Englisch erhältlich. Es macht da weiter, wo das obige Buch aufhört und beschreibt die weiteren Basis-Techniken, die man als Perl-Programmierer braucht: Nutzung von Modulen sowohl aus der Perl-Standard-Distribution als auch vom CPAN, Erstellung eigener Module, komplexe Datenstrukturen
Wenn ich Perl-Kurse gebe höre ich häufig: „Module brauchen wir nicht, wir machen nur kleine Skripte“. Meist stellt sich aber heraus, dass diese kleinen Skripte nicht nur häufig eingesetzt werden sondern auch relativ umfangreich sind. Und nahezu jede Perl-Anwendung, die mehr als ein paar Dutzend Zeilen lang ist, profitiert zum Beispiel von komplexen Datenstrukturen.
Mit den in diesem Buch vorgestellten Techniken kann man sich daher viel Arbeit erleichtern sowie robusten und wartbaren Code schreiben. Wer darauf verzichtet macht sich das Leben unnötig schwer.
Intermediate Perl ist zum Lernen von Perl daher auch unbedingt zu empfehlen.
Mastering Perl (Englisch) (Info beim Verlag)
von brian d foy
Der Dritte Teil der Perl-Einführung beschreibt einige weitergehenden Techniken. Aber: auch wenn sich der Titel nach einem Buch für Hardcore-Software-Entwickler anhört: Auch dem durchschnittlichen Sysadmin hilft es beim Debugging, Logging und Konfigurieren von Perl-Progeammen. Während von den obigen beiden Bücher jeder Einsteiger sein eigenes Exemplar haben sollte, reicht ein Mastering Perl pro Abteilung durchaus ...
Pflichtlektüre!
Perl Best Practices (Deutsche Ausgabe) (Info beim Verlag)
von Damian Conway
Dieses Buch ist absolute Pflichtlektüre und die dort aufgeführten Richtlinien sollten in jeder Firma als Codierungs-Regeln festgeschrieben werden, sofern im Einzelfall nichts anderes definiert ist. Damian Conway zeigt, wie man mit wenig Aufwand robusten, wartbaren und effizienten Code schreibt. Und nicht nur das: Wer sich an die Regeln hält macht sich das Leben leichter und spart viel Zeit. Man muss sich nicht an alle Regeln halten, aber kann sie als Basis für eigene Regeln und Konventionen verwenden.
Passend zu dem Buch verweise ich auch noch mal auf meinen Vortrag Perl [BP]est Practices (PDF) vom 9. Deutschen Perl-Workshop 2007 in München.
Gelegentlich höre ich den Einwand: „Aber wir machen keine High-End Software-Entwicklung, nur Systemadministration!“ Und gerade hier ist dieses Buch besonders wichtig, denn Systemadministratoren neigen besonders stark dazu, schwer wartbaren und wenig robusten Code zu schreiben, der viel gefürchtete Write-Only-Code.
Ein Hinweis nebenbei: so empfehlenswert das Buch selbst ist, bei den Modulen von Damian Conway sollte man ein wenig vorsichtig sein. Und auch für das in Kapitel 15 und 16 erwähnte Class::Std gibt es einige gute Alternativen: Sehr einfach anwendbar ist Class::Accessor, gekapselte Objekte bietet Object::InsideOut und ein modernes Objektsystem, angelehnt an Perl 6, bietet Moose.
Nachschlagen
Programmieren mit Perl (das Kamel-Buch, Deutsche Ausgabe der 3. Auflage) (Info beim Verlag)
von Larry Wall, Tom Christiansen und Jon Orwant
Dieses über 1000 Seiten dicke Buch hat zwar schon ein paar Jahre auf dem Buckel und geht nur bis zu Perl 5.6, ist aber als Nachschlagewerk und Referenz für jede Abteilung, die mit Perl entwickelt, zu empfehlen. Es werden alle Sprach-Features erklärt, es enthält eine Referenz der eingebauten Funktionen sowie eine Übersicht über die Standard-Bibliothek. Gleichzeitig bekommt man als Leser einen Einblick in das Denken von Larry Wall und kann so Perl besser verstehen.
Das meiste kann man sich zwar auch mit perldoc zusammensuchen, aber als Nachschlagewerk ist ein Buch meistens praktischer ...
Perl Kochbuch (Deutsche Ausgabe der 2. Auflage) (Perl Kochbuch)
von Tom Christiansen, Nathan Torkington
Das Perl Kochbuch bietet eine umfangreiche, fast 1000 Seiten dicke Sammlung von typischen Problemen und deren Lösung: Parsing kommaseparierter Dateien, Hashes vergleichen, Verarbeitung binärer Dateien, Datenbankanbindung, SQL ohne Datenbankserver nutzen, Signale abfangen, Parsing von XML und so weiter ...
Es ist daher ein prima Nachschlagewerk und sollte in keiner Abteilung, in der häufig in Perl programmiert wird, fehlen. Unter dem Strich bietet es auch mehr Praxisrelevanz als „Programmieren mit Perl“. Insbesondere Entwickler, die gerne fertige Code-Schnippsel übernehmen, finden da viele Beispiele.
Web-Entwicklung
Wer mal schnell ein Web-Interface für eine Datenbank oder eine andere Administrationsaufgabe zusammenstellen oder gar eine komplexe Webanwendung entwickeln will, muss sich nicht mit mit CGI in Code-HTML-Mischmasch herumquälen. Viel einfacher, robuster und wartbarer geht es mit einem Web-Framework, zum Beispiel Catalyst, Gantry, Jifty. Relativ nah an CGI ist CGI::Application, besonders performant, relativ low-level und da sehr mächtig ist Apache mit mod_perl.
Zu Gantry und Catalyst gibt es in der Zwischenzeit Bücher, zu mod_perl schon länger:
Catalyst – Accelerating Perl Web Application Development (Englisch) (Info beim Verlag)
von Jonathan Rockway
Catalyst in ein umfangreiches und mächtiges Web-Framework für Perl, das dennoch einfach einsetzbar ist. Wie Ruby on Rails vereinfacht es die Entwicklung von Web-Anwendungen.
Das Buch gibt eine Einführung in die Web-Entwicklung mit Catalyst und zeigt beispielhaft die Entwicklung einder datenbankgestützten Web-Applikation. Auch Themen wie AJAX, Testing und Deployment werden angesprochen.
Building Web Applications with Gantry and Bigtop (Englisch)
Phil Crow
Gantry ist, ähnlich wie Catalyst, ein Web-Framework für Perl. Es ist weniger populär, bringt aber eine bessere Unterstützung für mod_perl (und damit weniger Performance-Overhead) mit. Zudem bietet es ein GUI, um einfache Datenbankanwendungen zusammenklicken zu können.
Das Buch bietet anhand von Beispielen einen Überblick und eine Einführung in Gantry und Bigtop, das dazugehörige Code-Generierungs-Framework. Zudem enthält es Hinweise zum Testing und eine Referenz zu Bigtop und Gantry.
Zu mod_perl gibt es neben älteren Büchern zu mod_perl 1 seit kurzem den mod_perl 2 User's Guide von Stas Bekman und Jim Brandt, das Buch kenne ich aber selbst nicht. Die mod_perl Tutorial Handouts (Download) von Stas Bekman sind für den ersten Einstieg ganz empfehlenswert und zeigen sehr gut die erweiterten Möglichkeiten von mod_perl.
Testing
Code in unternehmenskritischen Bereichen sollte auf jeden Fall automatisch getestet werden, um Fehler und Folgefehler zu vermeiden. Der Einwand, dass dies zu viel Zeit koste die nicht vorhanden ist geht in die falsche Richtung: gutes Testing mit Regressiontests/Unit-Test/Komponententests spart Entwicklungszeit und führt zu robusterem, einfacher wartbarem Code!
Perl Testing – A Developers Notebook (Englisch) (Info beim Verlag)
von Ian Longworth, chromatic
Die entsprechenden Informationen kann man sich zwar auch aus dem Netz besorgen (da hauptsächlich Perl-Standard-Module sowie CPAN-Module beschrieben werden findet sich die komplette Dokumentation dazu im Netz), das Buch ist aber eine schöne Zusammenfassung, locker geschrieben und lädt zum Durchblättern ein. Zudem zeigt es, wie einfach Testing mit Perl ist und nimmt dem einen oder anderen die Angst vor zu viel Arbeit ...
Ist Intermediate Perl nicht nahezu identisch mit Einführung in Perl-Objekte, Referenzen & Module?
http://www.oreilly.de/catalog/lrnperlormger/
Das gibt es auf Deutsch.
Stephan: Das Buch ist quasi die erste Auflage, aber da hat sich doch einiges geändert, auch die Reihenfolge der Kapitel ist anders. So wird in Perl-Objekte, Referenzen & Module nicht auf die Core-Module und die Nutzung vom CPAN eingegangen und es hat insgesamt nur 15 statt 19 Kapitel. Die Unterschiede sind also nicht ganz klein.
Coole Liste. Vielen herzlichen Dank für die Zusammenstellung.
Ich vermisse noch folgendes Buch auf der List:
Effective Perl Programming: Ways to Write Better, More Idiomatic Perl
http://goo.gl/MeEyo
Kannte ich noch nicht, danke für den Hinweis; allerdings ist das auch neuer als dieser Artikel, von daher kann es da auch nicht erwähnt werden ;-)