You are here: Wissensbasis Web>Perl5Tutorial>Perl5Tutorial0 (2012-02-15)

Übersicht | Teil 1: Installation, Skalare, IO > Teil 3: Strings, Arrays, Hashes >>

Teil 0 - Was ist Perl?

Die am 14. Mai erschienene Version 5.14 wäre ein guter Vorwand,
sich mit der Sprache zu beschäftigen, die so viele emotionale Reaktionen provoziert.
Ein besserer Grund sind aber die Funktionalitäten, Module, Werkzeuge und Webseiten,
welche die Programmierlandschaft namens Perl in den letzten Jahren stark verändert haben.

Weil kein auf Deutsch erhältliches Tutorial im Netz so recht darauf eingeht,
entschieden sich einige Mitglieder der Perl-Gemeinschaft ein Neues zu schreiben,
welches auch in den nächsten Ausgaben dieses Magazins erscheint.
Es darf im Wiki der perl-community.de von jedem mit verbessert werden.

Dieses Tutorial richtet sich nicht an völlige Programmierneulinge. Konzepte wie
Schleifen, Variablen und Subroutinen (Funktionen) werden als bekannt vorausgesetzt.
Dafür wird der Einsatz empfehlenswerter Module geübt und auf Probleme jenseits
der heilen "Hallo Welt" eingegangen. Doch zuvor soll es um die Geschichte,
Philosophie und Gemeinschaft von und um Perl gehen, bevor das nächste Mal der
Praxisteil beginnt.

Wie alles begann

Perl ist ein Kind der quelloffenen Unix-Hackerkultur. Damals gab es weder das Web,
Python, Ruby noch Linux. Der stolze Vater (Larry Wall)
hatte sich bereits durch den Newsclient rn und das Werkzeug metaconfig einen Namen
erworben und seine Erfindung patch ist heute eine Vokabel, welche die meisten
Programmierer verstehen. Deshalb schenkte man ihm auch im Dezember 1987 Beachtung,
als er eine neue Sprache veröffentlichte, die nach einer sehr mächtigen Shell aussah.
Sie vereinte grundlegende C-Syntax (Schlüsselworte, Operatoren und geschweifte Klammern),
Dateitestbefehle, Spezialvariablen und Kommentare der Shell, die Unix-Kommandos (chown bis unlink)
und verstand sogar die aus sed, awk oder grep bekannten Regulären Ausdrücke.
Das erleichterte nicht nur das Erlernen, sondern auch die Entwicklung kleiner Programme,
die bisher zu komplex für Shellskipte waren, mit C aber um ein vielfaches aufwändiger
zu schreiben wären. Und so wurde Perl zu einem wichtigen Werkzeug für Administratoren
um Dateien auszuwerten, andere Rechner zu überwachen oder an Sockets zu lauschen
und darüber übersichtliche Berichte zu verfassen. Und es blieb bis heute dieses wichtige
Werkzeug. Das nachträglich gefundene Akronym "Practical Extraction and Report Language"
beschreibt genau dieses Anwendungsgebiet.

Perl 5 - der große Sprung

Wesentlich mehr Felder erschloss sich die Sprache 1994, mit der von Grund auf neu
entwickelten Version 5. Erweitert um eine Schnittstelle für das Einbinden von
Perl-fremden Programmteilen (XS), Referenzen für komplexe Datenstrukturen,
jederzeit ladbare Pakete, Namensräume, lexikalisch lokale Variablen und eine
sehr lässige Objektorientierung war Perl bereit für größere Vorhaben.
Dann kam auch schon das "WWW" und Perlskripte warenganz vorne mit dabei,
per CGI Webseiten mit Inhalten aus Datenbanken zu versorgen.
Dank der einheitlichen Datenbankschnittstelle DBI war das nicht allzu schwer.

Selbst heute, da wegen des einfacheren Verteilungsmechanismus PHP hier sehr weit
verbreitet ist, verwenden bekannte Firmen und Institutionen wie Amazon, IMDb,
Slashdot, Booking.com, die BBC, New York Times, ORF und viele mehr Perl für ihren
Internetauftritt. Sogar Online-Spiele wie Lacuna Expanse nutzen es.
Allerdings wird hier kaum noch CGI für die Schnittstelle direkt eingesetzt.
Neue Projekte werden heute mit komplexen Webframeworks gebaut,
welche die meiste Arbeit abnehmen. Perl hat hierfür Catalyst, Mojolicious oder Dancer,
die auf Augenhöhe mit Pendants wie Rails, Django oder Sinatra stehen.
Auch im Bank- und Nachrichtenwesen sowie in der Bioinformatik fand und findet Perl
weite Verbreitung.

Jede Linux-Distribution enthält neben Perl eine Reihe von Programmen wie
Frozen Bubble, Shutter oder gmusicbrowser, welche in Perl verfasst sind.
Programmierer und Administratoren freuen sich eher über ack,
einer intelligenten grep-Alternative. Des Weiteren läuft es oft an
von außen nicht sichtbaren Stellen. Es ist in git enthalten,
in den Quellen des "Libre Office" gibt es kleine Perlskripte für Konvertierungen
und selbst Google beschäftigt Perl-Spezialisten, um nur 3 Beispiele zu nennen,
warum manche Perl als das Klebeband bezeichnen, welches das Internet zusammenhält.

Ende der 90er Jahre wurde Perl auf Mac und Windows portiert und heute gibt
es nur eine Handvoll sehr seltene Betriebssysteme, für die es Perl nicht gibt.

Perl 5 und Perl 6

2000 kündigte Larry Wall schließlich Perl 6 an, um der etwas eingeschlafenen
Gemeinschaft wieder ein großes begeisterndes Ziel zu geben. Aus diesem anfangs
ungenauen Vorhaben entstand mit der Hilfe mehrerer hundert Vorschläge eine sich
immer weiter verfeinernde Spezifikation (Synopsen genannt).
Mehrere Interpreter und Compiler, darunter besonders Rakudo und Niecza,
erfüllen bereits große Teile dieser Spezifikation, laufen auch relativ stabil, aber sehr langsam.
Sie werden regelmäßig veröffentlicht und bereits für kleinere unkritische Aufgaben eingesetzt.

Rakudo ist ein Aufsatz für Parrot, einer quellfreien virtuellen Maschine, ähnlich der JavaVM
oder der CLR von Microsoft. Sie ist besonders für dynamische Sprachen wie Perl, Python
oder Ruby ausgelegt und wird auch mit dem Ziel entwickelt, daß in einer Sprache
geschriebene Bibliotheken ebenfalls in allen anderen Sprachen nutzbar sind.

Perl 6, ist ein vollständig neue, klar strukturierte Sprache, die wesentlich umfangreicher
und auch mächtiger ist als Perl 5, der sie nur oberflächlich und in ihrer Philosophie ähnelt.
Sie besitzt optionale Datentypen und vollständig überarbeitete Reguläre Ausdrücke,
die zu Klassen (Grammatiken) zusammengefasst werden dürfen.
Das kann genutzt werden, die Syntax sauber zur Laufzeit zu verändern.
Somit könnte es zum wirkungsvollen Gegenmittel der um sich treibenden Komplexität
in der Softwarewelt werden. Eine vollständige Liste der Fähigkeiten ist kaum möglich,
19 von 20 Fragen "Hat Perl 6 eine Syntax für ...?" können mit ja beantwortet werden.

Deshalb wird Perl 6 in absehbarer Zeit weder Perl 5 ersetzen noch endgültig fertiggestellt
werden. Aber viele Ideen daraus wurden in Module gepackt (beginnen meist mit "Perl6::"),
und können in Perl 5 genutzt werden. Das bekannteste dieser Module ist Moose,
welches mit seinen vielen Erweiterungen nicht nur ein modernes System zur Objektorientierung
in Perl 5 bereitstellt, sondern auch Teilklassen, Typisierung von Parametern,
eigene Subtypen und sehr viel mehr. Ein Teil der neuen OOP-Syntax könnte
in den nächste Jahren in den Sprachkern wandern.

Seit Version 5.10 sind bereits einige der nützlichsten und portabelsten Ideen aus
Perl 6 diesen Weg gegangen. Sie müssen aber mit "use v5.10;" zugeschaltet werden,
da sie das Funktionieren älterer Programme stören könnten.

Die "Renaissance of Perl"

Moose, Catalyst sowie die meisten hier genannten Pakete sind Beispiele für eine
neue Generation Module und auch einen neuen Geist, der seit etwa 3-4 Jahren einzog.
Enthusiasten gründeten sogar die EPO, die enlightened perl organisation, um diese
Entwicklung zu fördern und zu steuern. Lange ausstehende Probleme wie die umständliche
Kompilierung von XS-Modulen unter Windows wurden z.B. mit Strawberry Perl gelöst
und fast sämtliche wichtigen Webseiten wurden neu gestaltet oder ersetzt.
Sogar eigene Entwicklungsumgebungen und Editoren werden in Perl verfasst.
Dazu gehörte auch, die Quellen von Perl in ein git-Archiv zu portieren und der Wechsel
zu vorhersehbaren Zyklen, in denen neue Haupt- und Nebenversionen erscheinen.

Das große Archiv

Doch was ist es, das Menschen Perl wählen lässt? Dafür gibt es einen praktischen
Grund und einen emotionalen. Der praktische heißt kurz und trocken CPAN.
Für fast jedes Problem gibt es dort eine vorgefertigte Lösung in Form eines
Moduls (Bibliothek). Neben dem Umfang (beinah 100.000 Module) ist es aber auch die
umgebende Infrastruktur, die in der Welt der freien Software seinesgleichen sucht.
Sie beginnt bei einer (meist eingehaltenen) Kultur, genügend Dokumentation zu schreiben.
Für umfassende Softwaretests gibt es wiederum viele Module, welche fast immer
gut zusammenarbeiten und ein Grund sind, warum Perl in manchen Firmen nur eingesetzt
wird um andere Software oder Hardware zu überprüfen. Das dafür entworfene Protokoll
(TAP) entwickelte sich aus der Testsuite für Perl 1.0 und ist heute ein Standard
auch für PHP, Java, Ruby, Python und andere Sprachen.

Jeder, der CPAN-Module verwenden will, sieht TAP-Ausgaben, weil ohne bestandene Tests,
die Installation abgebrochen wird. Viele Perl-Enthusiasten lassen nur diese Tests
automatisiert laufen. Die zurückgesandten Ergebnisse werden zu Tabellen gebündelt,
in denen die Entwickler schnell sehen können, welche Probleme das Modul mit einer
Plattform und Perl-Version hat.

So können die Wahrscheinlichkeiten angezeigt werden, mit welcher ein Modul
mitsamt Abhängigkeiten unter der heimischen Plattform installierbar ist.
Auch Bugtracker, Foren und mehrere Kommentar-, Bewertungs- und
Verlinkungsmöglichkeiten unterstützen Autoren und Nutzer.
Jede veraltete Version ist im BackPAN gespeichert.
Auf cpan.org werden sogar die Unterschiede von Versionen in farbig markierten diffs angezeigt.
Neue CPAN-Clients wie cpanminus bieten eine noch einfacherere Installation.
Lediglich die möglichen Konflikte mit der Paketverwaltung der Distribution sind
noch ein offenes Problem, das sich aber bereits mit perlbrew umgehen lässt.
Auch bei fehlenden Schreibrechten können hiermit parallel zum Perl des Systems
Testumgebungen mit anderen Perl- oder Modulversion erstellt werden.

Die Perl-Philosophie

Der emotionale Grund für Perl ist seine Syntax, welche besonders viel unterschiedliche
Formulierungen eines Sachverhaltes erlaubt. Dadurch wird die subjektiv befriedigendste
Alternative wählbar, egal nach welchem Ideal man sich richtet. Diese Idee verkürzte
Larry Wall zur Parole TIMTOWTDI (es gibt mehr als einen Weg).
Menschen wie Guido van Rossum, dessen Python im Sprachdesign dazu einen Gegenpol
bildet (es gibt nur einen Weg), sehen darin eher ein Grundübel und Hauptursache unlesbarer
und unwartbarer Programme. Ihr Argument ist, eine "saubere" Sprache müsse einfach
erlernbar sein und dürfe daher nur wenig Regeln haben, da Code wesentlich öfter gelesen
als geschrieben werde. Larry Walls Gegenargument dazu ist, daß der praktische Nutzen
wichtiger sei, schließlich werde nur einmal gelernt, aber oft angewendet.

Viele der Regeln, die Python vorschreibt, wie einheitliche Einrückungen und "nur ein Befehl pro Zeile",
sind auch in der Perlwelt so allgemein anerkannt, daß darüber praktisch nie gestritten wird.
Perlanhänger stören sich lediglich daran, keine wohlbegründete Ausnahmen machen zu können.
Besonders in großen Projekten, wo klare Regeln zum Gelingen eindeutig beitragen,
können Perl::Critic und Perl::Tidy helfen, die selbst gewählten Regeln einzuhalten.

Eine natürliche Sprache

Doch Perl ist mehr als nur TIMTOWTDI, denn Larry Wall ist auch bekennender
Christ und entlehnte den Namen aus http://www.bibleserver.com/go.php?lang=de&bible=EU&ref=Mt13%2C46 einem Bibelzitat,
in dem es um das Erreichen des Paradieses, also des maximalen Glücksgefühls geht.
Und tatsächlich traf er viele Designentscheidungen aus dem Bauch.
Im Gegensatz zu anderen Sprachentwicklern, denen es um logische Eleganz oder
einen effizienten Minimalismus geht, der auch wesentlich besser in ein akademisches
Umfeld passt, mußte es sich für Larry stimmig anfühlen. Er vergaß nie, daß vor
dem Rechner Menschen mit Gefühlen sitzen, deren Sprachempfinden täglich in einer
Umgebung trainiert wird, die meist nichts mit Computern zu tun hat.
Viele der Perl-Befehle, die nicht C oder dem gängigen Sprachgebrauch der Programmierer
entlehnt wurden, gehören dem einfachen Englisch an wie "use", "ISA" (is a), "tie",
und viele mehr. Der studierte Linguist ließ aber auch sein Wissen über menschliche
Lese- und Sprachgewohnheiten einfließen, was noch deutlicher an Perl 6 erkennbar ist.
Dazu gehört, daß Sprachen niemanden aussperren, der bestimmte Konzepte nicht
verstanden hat, die nicht absolut notwendig sind. Natürliche Sprachen erlauben
auch das Kombinieren der Wörter zu neuen Bedeutungen, was in Computersprachen
oft weniger frei ist und zu einer Überzahl spezialisierter Befehle führen kann.
Das ist eine Hauptursache warum PHP ca. 2500 Kernbefehle hat, und Perl etwa 300.
Perls Eigenarten lassen sich aber auch an seinem Maskottchen ablesen, dem Kamel.
Es riecht nicht immer gut und spuckt manchmal, ist aber robust und zuverlässig.

Perl in der Kritik

Daß Perl dennoch von einigen als besonders furchtbar empfunden wird, hat vielfältige
Gründe. Manche Menschen mögen nicht so viele Sonderzeichen auf dem Bildschirm,
was aber eher Gewohnheit oder ästhetisches Empfinden ist und nicht debattierbar ist.
Sonderzeichen in regulären Ausdrücken haben sich als nützlich erwiesen und sind
in fast jeder Sprache zu finden. Am Variablenanfang können sie wertvolle Orientierung
bieten. Als Name von Sondervariablen sind sie wirklich eher verschleiernd als nützlich.
Dies und Ähnliches hat zu Zeiten von Perl 3 einige Tastaturanschläge gespart,
wird aber heute von kaum jemand in der Perl-Gemeinde verteidigt. Veraltete Konstrukte
wie diese wurden über Gebühr beibehalten, da Perl immer eine Politik verfolgte,
wenn möglich keine Kompatibilität zu brechen. Viele Uralt-Programme laufen selbst
mit aktuellen Versionen. Deshalb kann heute sowohl sehr "moderner" Code geschrieben
werden, als auch mit veralteten Idiomen gespickter. Der meist während des WWW-Boom
geschriebene, nach allen Maßstäben schlechte Perlcode, der vielen noch heute als Beweis
dient, daß Perl nur hässlich sein kann, benutzte noch vermehrt alte Schreibweisen, "lebte"
aber auch von einer generellen Unerfahrenheit der damaligen Jungprogrammierer.

Als wirklich problematisch wird von den Entwicklern vor allem das altertümlich wirkende
Fehlen von Signaturen und die Objektorientierung anerkannt, die mit einem Regal
zum selbst-zusammen-schrauben vergleichbar ist. Sie bietet kein Hindernis,
Ideen zu verwirklichen, aber stellt Neulinge vor unnötig große Herausforderungen.
Für beides gibt es zwar Module (Moose und viele andere), aber es ist geplant,
mit den nächsten beiden Versionen (5.16, 5.18) das mit neuen Schlüsselwörtern zu beheben.

Was die Leute so treiben

Ebenfalls ein starkes Argument für Perl sind die Menschen, die sich damit befassen.
Ein kurzer Blick auf diese Seite reicht, um welche in einer naheliegenden Stadt
treffen zu können. Die Frankfurter gehören ohne Zweifel zu den aktivsten,
denn nicht zufällig findet der nun schon dreizehnte deutsche Perl-Workshop im Oktober
diesen Jahres auch dort statt. Jeder mit ernsthaftem Interesse ist dort herzlich eingeladen.
Der deutsche war zwar der erste, aber mittlerweile finden solche Workshops überall
auf der Welt statt. Dem unaufhaltsamen Andrew Shitow gelang es sogar zwischen Minsk
und Wladivostok fast 10 Workshops in nur einem Jahr zu organisieren. Dafür überließ
man dieses Jahr auch ihm die Ausführung der YAPC::EU vom 15. bis 17. August in Riga.

Diese Treffen von ca. 300 bis 400 Menschen auf kontinentaler Ebene sind ebenfalls
reine Begegnungen der sich selbst organisierenden Gemeinschaft. Dahingegen ist die
OSCON in den USA, die einst als Perl-Conference entstand, eine eher kommerzielle
Veranstaltung mit wesentlich mehr Besuchern. Dort reden regelmäßig Perl-Größen wie
Damian Conway, für den immer schon ein Raum einen ganzen Tag eingeplant ist, oder
Larry Wall, der dort seine jährliche "state of the onion"-Rede hält, in der er den jeweiligen
Zustand von Perl zu beschreiben versucht. Daraus leitet sich das Zwiebel-Logo der
Perl-Foundation ab, welche die meisten rechtlichen und finanziellen Dinge für Perl regelt.
Sie empfängt vor allem Spenden und fördert damit besonders wichtige Vorhaben und
betreibt die Server, auf denen die wichtigen Seiten laufen, wie Perl's Heimseite perl.org,
die Dokumentation, das CPAN, das zentrale Diskussionsforum, Blogs und die Netzseiten
vieler der großen Projekte.

Die URL de.perl.org leitet auf das größte deutsche Forum um, das auch ein Wiki und
die deutsche Perldokumentation umfasst. Dort tummeln sich unter anderem die Macher
des Perl-Magazins $foo und der eher auf Anfänger ausgerichteten Perlzeitung.
Es gibt aber auch andere Foren wie perlunity und andere Zeitschriften wie das Linux-Magazin,
das in jeder Ausgabe eine Perl-Kolumne hat. Auch heise hat ab und an einen Perl-Artikel,
aber um wirklich auf dem Laufenden zu bleiben empfehlen sich die deutschen perl-nachrichten.
Wer englisch lesen kann, sollte die spärlichen perlnews meiden und gleich auf perlsphere oder
den blogs.perl sich das Passende suchen, ganz gut gefiltert auch auf perlbuzz.

Auch wenn die offizielle Einsteigerseite und perl-begin.org nicht schlecht sind, so bietet
immer noch das Buch "Einführung in Perl" von Randal L. Schwartz und Brian d Foy den
besten und auch aktuellsten Anfang. Dem sollte man unbedingt "Modern Perl" folgen lassen
oder man wartet bequem die nächste Ausgabe vom freiesMagazin ab, in der zu ersten
kleinen aber praktischen Skripten angeleitet wird.


Übersicht | Teil 1: Installation, Skalare, IO > Teil 3: Strings, Arrays, Hashes >>

-- HerbertBreunung - 2011-06-29
Topic revision: 2012-02-15, HerbertBreunung
 
Bitte die NutzungsBedingungen beachten.
Bei Vorschlägen, Anfragen oder Problemen mit dem PerlCommunityWiki bitten wir um WebBottomBarExample">Rückmeldung.