Perl ist eine Interpreter-Sprache, d.h. der Quellcode muss vor der Ausführung nicht kompiliert werden, sondern wird direkt übersetzt. 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
Der Perl-Interpreter ist in der Standardinstallation von Ubuntu enthalten, kann ansonsten aber über das Paket
perl
mit apturl
Paketliste zum Kopieren:
sudo apt-get install perl
sudo aptitude install perl
installiert werden [3].
Ähnlich wie bei Python verfolgt Perl seit Beginn der Entwicklung 2 grundlegende Prinzipien:
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.
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, auseinander zu setzen.
Perl hat jedoch noch weitere Eigenheiten, die jeder Nutzer vor der Arbeit mit dieser Sprache beachten sollte.
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 ein und derselbe Befehl unterschiedliche Bedeutungen haben. Dies hängt davon ab, in welchem Zusammenhang der Befehl 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 Kontextsensitivität 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.
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 lernen und immer wieder anwenden wird. 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.
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 muss man sich um die Effizienz meist keine Gedanken machen.
In anderen Sprachen ist es oft so, dass wenn man sein Programm optimieren will, das Programm komplexer und größer wird. 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 muss man trotzdem nicht unbedingt auf hardwarenahe oder rechenintensive Sachen verzichten. Denn Perl selber 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 reine interpretierte Sprache. Der Perl-Code wird vor der Ausführung komplett 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 heraus gefiltert. 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.
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 über Syntax-Highlighting verfügt. Man kann auch sogenannte IDEs benutzen, allerdings wird man dies bei Perl-Programmierern seltener finden. Für den Einstieg sollte man einen Editor und keine IDE benutzen, eine gute Wahl ist dank integrierter 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
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
Folgend einige Dokumentationen zum Erlernen von Perl.
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 Tutorials. 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
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.
Diese Revision wurde am 6. März 2015 10:13 von aasche erstellt.