Perl
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
Perl 🇬🇧 ist eine Interpreter-Sprache, d.h. der Quellcode braucht vor der Ausführung nicht kompiliert zu werden, sondern wird direkt ausgeführt. Mitte der neunziger Jahre des letzten Jahrhunderts hat sich Perl vor allem durch seine vielfältigen Möglichkeiten, Texte zu bearbeiten, schnell verbreitet und wurde vorrangig für Webanwendungen benutzt. Manche Stimmen behaupten sogar, dass es nur durch Perl möglich war, schnell Informationen im Internet zu verbreiten.
Allerdings gibt es nicht nur Befürworter von Perl. Zwei Zitate aus der manchmal hitzig geführten Debatte zwischen Perl-Gegnern und -Verfechtern:
"Perl ist die einzige Sprache, die vor und nach einer RSA-Verschlüsselung gleich aussieht." (Keith Bostic)
"… wir witzeln oft, dass ein Kamel ein Pferd ist, das von einem Komitee entworfen wurde. Aber wenn man darüber nachdenkt, ist das Kamel ziemlich gut an das Leben in der Wüste angepasst. Das Kamel hat sich dahin entwickelt, autark zu sein. Andererseits hat es sich nicht dazu entwickelt, gut zu riechen. Perl auch nicht." (Larry Wall)
Quellen: Wikipedia
Installation¶
Der Perl-Interpreter ist in der Standardinstallation von Ubuntu enthalten, kann ansonsten aber über das Paket
perl
Befehl zum Installieren der Pakete:
sudo apt-get install perl
Oder mit apturl installieren, Link: apt://perl
installiert werden [3].
Einleitung¶
Ähnlich wie bei Python verfolgt Perl seit Beginn der Entwicklung zwei grundlegende Prinzipien:
Erstes Prinzip: There Is More Than One Way To Do It (TIMTOWTDI)¶
Es gibt mehr als nur einen Weg, etwas zu tun. Grundsätzlich hat dies Vor- und Nachteile. Die Vorteile, dass man etwas auf mehrere Wege lösen kann, liegen darin, dass man je nach Problem die geeignetste und leserlichste Methode wählen kann. Man kann somit nahe am Problem und sehr verständlich programmieren. Das gleiche kann aber auch als Nachteil gesehen werden, denn die gleiche Freiheit erlaubt es jemanden, sein Problem sehr komplex zu gestalten. Perl glaubt dabei an das Gute im Menschen und hofft, dass man sich der guten Seite und nicht der bösen Seite der Macht anschließen wird. 😉
Zweites Prinzip: Makes easy jobs easy and hard jobs possible.¶
Aufgaben, von denen man erwartet, dass sie einfach sind, sollten auch einfach bleiben. Befehle und Lösungen, die man alltäglich braucht, sollten einfach und leicht zu verwenden sein. Auch schwere und komplexe Aufgaben werden dadurch möglich, indem man die einfachen Sachen miteinander verbindet. Um es kurz zu sagen: Perl ist eine Programmiersprache, die den Programmierer fördert und nicht Steine in den Weg legt oder vom Programmierer erwartet, sich mit komplexen Themen, wie der Speicherverwaltung oder Extra-Bibliotheken, auseinanderzusetzen.
Perl hat jedoch noch weitere Eigenheiten, die jeder Nutzer vor der Arbeit mit dieser Sprache beachten sollte.
Kontext¶
Larry Wall ist ein Linguist. Seine Aufgabe ist es zu verstehen, wie Menschen eine Sprache verstehen und lernen. Aus diesen Gegebenheiten hat er Perl ähnlich der menschlichen Sprache entwickelt. Anders als in anderen Programmiersprachen kann somit der gleiche Befehl unterschiedliche Bedeutungen haben. Dies hängt davon ab, in welchem Zusammenhang er benutzt wird. In der deutschen Sprache kann z.B. das Wort "Französisch" unterschiedliche Bedeutungen haben, je nachdem, in welchem Zusammenhang es benutzt wird. Wenn man Perl benutzt, wird man diese Kontextabhängigkeit schätzen. Wenn man Perl jedoch lernt, muss man auch diese unterschiedlichen Bedeutungen lernen. Davor braucht man aber nicht zurückzuschrecken, denn fast immer handelt Perl so, wie man es erwarten würde.
Für den Programmierer¶
Perl wurde für Programmierer entwickelt und nicht für Einsteiger optimiert. Immer, wenn man eine Entscheidung hatte, etwas leicht für den Einsteiger oder leicht für den Programmierer zu gestalten, hat man sich fast immer für den Programmierer entschieden. Das bedeutet nicht, dass Perl ungeeignet zum Lernen ist, es wurde jedoch so optimiert, dass Leute, die Perl schon können, leicht, schnell und verständlich programmieren können. Warum wurde das so gemacht? Die Antwort darauf ist, dass man Perl nur einmalig lernt und immer wieder anwendet. Man wird später ganz selbstverständlich Abkürzungen verwenden. Damit kommt man schneller ans Ziel, und es ist lesbarer. Der Nachteil liegt beim Lernaufwand, denn diese Abkürzungen müssen ebenfalls erlernt werden.
Leistung und Effizienz¶
Zu Perl kann man sagen, dass es eine recht gute Leistung besitzt, da es generell dafür entwickelt wurde. Keiner möchte tolle Funktionen haben, die letztendlich viel zu langsam sind. Von daher braucht man sich um die Effizienz meist keine Gedanken zu machen.
In anderen Sprachen kann ein Programm beim Optimieren komplexer und größer werden. Das hört sich zuerst komisch an. Wenn man z.B. in C/C++ Leistung gewinnen will, muss man meistens mit Zeigern arbeiten, wodurch das Programm letztendlich größer und komplexer wird. Bei Perl jedoch ist die leichteste Methode fast immer auch die schnellste Methode, interne Befehle wurden schon auf größtmögliche Effizienz optimiert. Wenn man manuell versucht, das ganze nochmals zu optimieren, macht man diese Optimierung womöglich zunichte.
Dies bedeutet aber nicht, dass Perl schneller ist als C/C++. Man hat mit Perl schneller eine Lösung gefunden, und diese ist womöglich auch leichter zu programmieren. Wenn man aber nah an der Hardware programmieren möchte oder sehr rechenintensive Algorithmen, wie z.B. einen Audio-/Video-Codec, entwickeln will, dann ist man bei Perl an der falschen Stelle. Das heißt aber nicht, dass man keinen eigenen Videoplayer schreiben könnte. Man wird wahrscheinlich nur nicht einen Algorithmus wie MPEG oder MP3 in Perl schreiben können.
Weiterhin braucht man trotzdem nicht unbedingt auf hardwarenahe oder rechenintensive Anwendungen zu verzichten, denn Perl selbst wurde in C geschrieben. Sehr viele Bibliotheken und Befehle, die man in Perl benutzt, werden nahezu in C-Geschwindigkeit ausgeführt. Damit ist es möglich, rechenintensive Sachen in C auszulagern und den Rest in Perl zu schreiben. Wenn man selber kein C kann oder erlernen möchte, dann ist dies nicht weiter problematisch. Mit dem CPAN 🇬🇧 gibt es eine zentrale Anlaufstelle für Bibliotheken. Insgesamt existieren hier über 10.000 Module, die entweder in C oder in Perl geschrieben wurden. Rechenintensive Module wie 3D-Programmierung mit OpenGL wurden z.B. in C geschrieben, und diese Module lassen sich aus Perl heraus nutzen.
Weiterhin ist Perl keine rein interpretierte Sprache. Der Perl-Code wird vor der Ausführung in einen Zwischencode kompiliert. Bei reinen Interpretern geschieht eine Kompilierung des Befehls erst unmittelbar vor seiner Ausführung. Bei einer Schleife, die 1000-mal durchlaufen wird, muss ein reiner Interpreter diese Schleife 1000-mal kompilieren. Bei Perl geschieht dieser Vorgang bloß einmalig. Ebenso werden Kommentare in diesem Zwischencode herausgefiltert. Zusätzlich ist die Erkennung von Syntax-Fehlern vor der Ausführung möglich. Eine reiner Interpreter kann erst in Zeile 130 einen Fehler erkennen, wenn das Programm in Zeile 130 angekommen ist. Bis dahin ist es aber schon gelaufen und hat diverse Aufgaben erledigt.
Ein Programm erstellen¶
Zum Programmieren eignet sich jeder beliebige Editor, der eine Speicherung des Textes im ASCII-Format ermöglicht. Für besseres und effizienteres Arbeiten empfiehlt sich die Verwendung eines Editors, der zumindest eine Syntax-Einfärbung bietet. Man kann auch sogenannte IDEs benutzen, allerdings findet man dies bei Perl-Programmierern seltener. Für den Einstieg sollte man einen Editor und keine IDE benutzen, eine gute Wahl ist dank integrierten Entwicklungs-Funktionen SciTE.
Hier wird die Ausführung anhand des "Hello, World!"-Programmes gezeigt. Der Quellcode zu diesem Programm, welcher wie oben erwähnt in einem Editor [2] erstellt wird, lautet folgendermaßen:
1 2 | #!/usr/bin/perl -w print "Hello, World!"; |
Diese Datei kann man mit der Endung *.plx oder *.pl speichern. "plx" steht für "Perl Executable". "pl" stand ursprünglich für "Perl Library". Da aber heutzutage Module benutzt werden mit der Dateiendung "pm", kann auch "pl" für die normalen Skripte benutzt werden. (Es ist aber prinzipiell absolut egal, welche Endung die Datei hat oder ob überhaupt eine!)
Das Skript ist nun im Terminal [1] ausführbar durch Eingabe von:
perl hello.plx
Der Shebang-Mechanismus¶
Da es lästig erscheint, immer "perl" vor das Skript zu schreiben, wurde der sogenannte Shebang-Mechanismus in Unix eingebaut. In der ersten Zeile des Skriptes steht immer das Programm, das den folgenden Code in dieser Datei ausführt. Die erste Zeile gibt an, dass die folgenden Zeilen mit Perl ausgeführt werden. Dieses befindet sich unter Ubuntu und den meisten anderen GNU/Linux-Distributionen unter /usr/bin/perl. Die Option -w ist optional und schaltet extra Warnungen ein, so dass man bei Problemen eine Rückmeldung bekommt.
Nachdem das Skript wieder gespeichert wurde, muss es noch mit chmod ausführbar gemacht werden:
chmod u+x hello.plx
Starten kann man das Programm danach mit:
./hello.plx
Dokumentation¶
Folgend einige Dokumentationen zum Erlernen von Perl.
CLI¶
Man kann die Dokumentation auch über die Konsole aufrufen. Dafür muss das Paket perl-doc installiert [3] sein. Danach steht der Befehl perldoc
in der Shell zur Verfügung. Wenn man eine Dokumentation zu einer Funktion benötigt, kann man Folgendes tun:
# Beispiel anhand von split perldoc -f split
In der Manpage von Perl gibt es dazu eine große Liste von Anleitungen. Diese lassen sich dann mit perldoc
abrufen:
perldoc perlintro perldoc perldsc perldoc perlboot ...
Wenn man eine Dokumentation zu einem Modul benötigt, dann kann man diese Dokumentation ebenfalls mit perldoc
aufrufen. Dies funktioniert auch mit Nicht-Standardmodulen.
perldoc Data::Dumper
Bücher¶
Aus geschichtlichen Gründen ist die erste Anlaufstelle für Perl-Bücher der Verlag O'Reilly, wo man hochqualifizierte Bücher findet. Für Einsteiger lohnen sich folgende zwei Bücher:
Einführung in Perl 🇩🇪 (Lama Buch)
Einführung in Perl Objekte, Referenzen & Module 🇩🇪 (Alpaka Buch)
Das Alpaka-Buch ist eine direkte Fortsetzung des Lama-Buches. Weiterhin gibt es noch:
Programmieren mit Perl 🇩🇪 (Kamel Buch)
Von Larry Wall selber geschrieben wurde und praktisch die Standardlektüre zu Perl. Das Buch ist aber nicht unbedingt zum Erlernen von Perl gedacht.Perl-Kochbuch 🇩🇪
Das Kochbuch ist eine Ergänzung zum Kamel-Buch. Es enthält durchgehend Lösungen für eine Menge von Problemen, die im Alltag auftreten können. Kurze Erklärungen zu den Themen sind vorhanden, ausführlich werden diese Themen im Kamel-Buch erklärt.Reguläre Ausdrücke 🇩🇪
"Reguläre Ausdrücke" behandelt nicht nur reguläre Ausdrücke in Perl, sondern es werden ebenfalls reguläre Ausdrücke in Java und in den .NET-Sprachen besprochen. Das Buch ist so aufgeteilt, dass es zuerst alle allgemeinen Feinheiten von regulären Ausdrücken erklärt und beschreibt, wie sie funktionieren. Der Beispielcode der regulären Ausdrücke wird dabei fast durchgängig mit Perl-Code illustriert, da dort deren Anwendung am einfachsten ist. Der Perl-Code ist aber nahezu Pseudocode ähnlich geschrieben. Zu den Sprachen Perl, Java und den .NET-Sprachen gibt es aber jeweils ein zusätzliches Kapitel, das die Verwendung von Regulären Ausdrücken, mit allen Details, in diesen Sprachen ausführlich erklärt.
Links¶