Perl

Das Perl-Wappentier

Practical Exctracting and Report Language
Rasch und einfach zu mächtigen Programmen

Perl ist eine der modernsten und leistungsfähigsten Programmiersprachen.
Der Einstieg ist mit Grundkenntnissen der Programmiertechnik sehr leicht, die Bandbreite bis zu Perl-Profis allerdings sehr groß.
Im Internet wird Perl für die Erstellung dynamischer Webseiten eingesetzt.
Perl ist ideal zur Steuerung und Wartung des Betriebssystems einsetzbar, und zwar sowohl auf Linux als auch auf Windows.
Perl Grundbegriffe: Script, Interpreter, Compiler, CGI (Dynamische Webseiten), Konsolen-Programme, ...
Installation Auf Linux selbstverständlich, auf Windows empfehlenswert
Umgebung Auskunft über die Perl-Umgebung (Environment)
System-Befehle Befehle an das System erteilen und die Antwort auswerten (Win-Registry)
Array Verwendung von Arrays, Listen und Hashes in Perl
Daten-Umwandlung pack & unpack: Binär, Ganze Zahlen, Gleitkomma, Text, Zeichen, ...
Datenbank Zugriff auf eine MySQL Datenbank
Datei I/O Lesen und Schreiben von Dateien (Text, Binär)
Datum & Zeit System-Datum und Zeit, UNIX-Timestamp, ...
Große Zahlen Große ganze Zahlen, Bruchzahlen, Gleitklomma-Zahlen, ...
Kommentare und Pragmas: Nicht ausführbare Anweisungen
Prozesse Asnychrone (parallel laufende) Child-Prozesse, Client, Server,...
Regular Expressions Profi-Werkzeug zur Textverarbeitung (Allgemein, Perl)
Verzeichnis-Baum Perl als Standard-Werkzeug für die Arbeit im Datei-Verzeichnisbaum
Webseiten Verschiedene Methoden zur Ausgabe von HTML
Webseiten lesen Live-Webseiten lesen und Informationen entnehmen
CGI Hilfsprogramme für den Webserver
Zahlensysteme Bin, Oct, Dec, Hex im Quelltext und bei Input / Output
ZIP Archive, Kompression und Expansion von Dateien
Zufall Erzeugung zufälliger Zahlen und Strings, Mischen
PerlScript Perl-Einbettung in 'normale' Webseiten
Links Perl-Links Ausgewählte Links zum Thema "Perl"

Perl-Kompress

Script

Perl-Programme sind Scripts aus lesbarem Text. Zur Ausführung wird ein Script an den Perl-Interpreter übergeben.
Perl Script-Programme sind unabhängig von Betriebssystem und Version. Sie sind daher ausgezeichnet portabel.

Interpreter

Der Perl-Interpreter ist ein Programm, welches Perl-Scripts liest, in Befehle übersetzt und diese ausführt. Ein Perl Interpreter ist auf Linux bereits installiert, und für → Windows kostenfrei erhältlich.

Details zu dem Themen Perl - Script - Interpreter - Compiler

Dynamische Webseiten

ändern Funktion und Aussehen nach Bedarf. Eine Suchmaschinen-Webseite ist z.B. ein kleines Webseiten-Programm, welches ihre Wünsche entgegennimmt und die Ergebnisse variabel anzeigt.
Perl ist dazu hervorragend geeignet.
Mit Perl kann man auch ganze Pakete von Web-Programmen herstellen, z.B. ein Forum, eine Terminverwaltung, ein Wiki-Lexikon usw.

Details zu dem Themen Perl - Webseiten - Konsolen-Programme

Verwaltungs-Programme

Wenn man auf eine interaktive grafische Oberfläche (Fenster, Maus) verzichtet, dann kann man mit wenig Aufwand sehr effiziente Programme herstellen. Perl ist hervorragend für Konsolen-Programme geeignet und wird deshalb gerne für Verwaltungs-Programme und zur Automatisierung verwendet.

AnwenderInnen-Programme

Theoretisch könnte man mit Perl auch Programme zur Textverarbeitung, Bildbearbeitung oder PC-Spiele herstellen. Das ist jedoch derzeit nicht die Stärke von Perl.

Programmiersprache

Perl ist eine vollwertige moderne Programmiersprache. Perl-Programme lassen sich für jedes Gebiet der Informatik herstellen.
Beispiel-Stichworte: Internet, Text, Grafik, Sound, Server, Netzwerk, Automatisierung, ...

Module

Wie jede andere moderne Programmiersprache ist Perl modular aufgebaut. Der Kern enthält die Grund-Funktionen, zusätzlich sind tausende Module mit spezialisierten Funktionen verfügbar. Fast alle Module sind - ebenso wie Perl - kostenfrei im Internet verfügbar.
Larry Wall, Quelle:Wikipedia

Geschichte

Perl wurde 1987 von Larry Wall (damals bei Unisys) entwickelt. Die Lösung einer Aufgabe mit den vorhandenen Möglichkeiten war ihm zu mühsam und zu langweilig, und er versuchte (und erreichte) selbst eine bessere und allgemein verwendbare Lösung.
Der Name Perl (auch die Interpretation 'Practical Extraction and Report Language' ?) stammt von ihm.
Larry Wall arbeitet weiterhin an führender Stelle der Perl Entwicklung, jedoch gemeinsam mit einer großen Community.
Er beschreibt Perl als 'postmodern' und meint damit die kreative Freiheit, die Perl im Gegensatz zum strengen Formalismus von C++ oder Java bietet. Daher kann man mit Perl besonders klare und saubere Programme ebenso schreiben wie besonders unverständliche.
Perl wurde mit klaren Zielen entwickelt und konnte sich u.a. auf Erfahrungen mit awk, C und der Linux Shell stützen (und deren Schwächen vermeiden).
Die Stärken von Perl liegen in der Unabhängigkeit und im langfristigen Konzept:
Auch betagte Perl-Programme (Version 1) laufen noch heute mit Perl 5 auf PC aller gängiger Betriebssysteme.
Perl wird nicht nur durch zahlreiche Module mit speziellen Funktionen ergänzt, auch der Kern ist für die laufende weitere Entwicklung ausgelegt.
Die aktuelle Version 5 ist seit 1994 erfolgreich. Die nächste Version 6 wird zahlreiche revolutionäre Elemente enthalten und vorhandene Elemente teilweise ändern. Deshalb ist geplant, Perl 5 noch längere Zeit parallel zu Perl 6 weiter zu entwickeln, und Perl Programme <=5 in Perl 6 zu übersetzen.
Für Perl sind mehrere Symbole üblich: Zwiebel (von Larry Wall bevorzugt ?), Kamel (Verlag O'Reilly).

Perl:   Script - Interpreter - Compiler - ServerModul

Script

Perl-Programme sind "Scripts", d.h. sie enthalten lesbaren Text und können daher mit jedem beliebigen Text-Editor erzeugt, gelesen und bearbeitet werden.
Beispiel für ein Perl Script-Programm /home/test/demo.pl (Linux) oder C:\demo.pl (Windows):
print "Hier ist Perl !\n";

Das gleiche Programm kann auf jedem Betriebssystem verwendet werden !

Interpreter

Zur Ausführung wird ein Perl ↑ Script-Text an ein Interpreter-Programm übergeben. Der Interpreter ist ein ausführbares Programm (Binary) und daher unterschiedlich je nach Betriebssystem !
Jede → Linux Distribution enthält einen Perl-Interpreter.
Auf → Windows muss man einen Perl-Interpreter perl.exe installieren.

Perl ist kostenlos Perl-Interpreter sind im Internet für alle gängigen Betriebssysteme kostenfrei erhältlich, z.B. bei ActiveState, Perl.org (Strawberry Perl)
Zusätzlich gibt es hunderte von Perl-Modulen, mit denen sich die Funktionalität erweitern lässt.

Die erste Zeile von Perl Script-Programmen enthält nach dem #! Shebang den Pfad zum Interpreter-Programm (auf Linux meist /usr/bin/perl auf Windows C:\Programme\Perl\bin\perl.exe ). Das Windows-Betriebssystem ignoriert zwar diese Anweisung, ein → Webserver beachtet sie jedoch auch auf Windows).

So arbeitet ein Interpreter:
Das Programm liest den Text des Script-Programms und erzeugt daraus Befehle in der Maschinensprache des jeweiligen Betriebssystems.
Das Programm in Maschinensprache wird unmittelbar ausgeführt.
Das Interpreter-Programm (selbst in C++ erstellt) arbeitet extrem schnell. Die Zeit für die Übersetzung der Befehle ist bei üblichen Programmen nicht merkbar.
Bei sehr großen Programmen benötigt die Übersetzung allerdings einige Zeit (Zehntelsekunden bis Sekunden). In diesem Fall laufen Programme in anderer Techologie ( → Java Byte-Code oder C++ Compiler) viel schneller, allerdings mit wesentlich höherem Aufwand zur Entwicklung.

Byte-Code

Der Interpreter erzeugt als interne Zwischen-Stufe einen Byte-Code. Dieser ist eine universell codierte Darstellung des Perl-Programms, ähnlich wie der für → Java eingesetzte Byte-Code.

Derzeit ist der Perl Byte-Code nicht zugänglich. In der nächsten Perl Version 6 könnte der vor-compilierte Byte-Code ähnlich verwendbar werden wie derzeit bei Java.

Compiler

Es ist möglich, Perl Script-Programme in ausführbare Programme (Binaries, *.exe ) umzuwandeln. Perl-Binaries starten schneller, allerdings kann man sie weder lesen noch ändern.
Dazu werden im Internet einige (vorwiegend kommerzielle) Compiler angeboten.
Im → ActivePerl Paket ist kostenfrei der Compiler perlcc integriert.
Beispiel: So kann ein Script-Programm C:\test.pl in ein ausführbares Programm C:\test.exe umgewandelt werden:
C:\> C:\Programme\Perl\bin\perlcc -o test.exe test.pl
Tipp: Experimentieren sie zunächst nur mit kleinen und möglichst einfachen Programmen.

Der Compiler perlcc hat allerdings nur geringen praktischen Wert.
Vorteil: Damit erzeugte Programme *.exe laufen auf jedem PC des gleichen Betriebssystems, und zwar auch ohne Installation von Perl.
Nachteile:
Ein Binary ist nicht mehr portabel. Man muss für jedes Betriebssystem eine eigene Variante erzeugen.
Spezielle Nachteile aktuell verfügbarer Compiler:
Die erzeugten Programme sind relativ groß (schon bei winzigen Programmen einige 100kB). Vermutlich wegen der langen Ladezeit laufen sie kaum schneller.
Die Compiler selbst laufen langsam und haben gelegentlich Probleme mit größeren Programmen und bei Verwendung mancher Perl-Module.

Webserver-Modul

Das Modul mod_perl ist eine spezielle Version eines Perl-Interpreters für den → Apache Webserver. Das Modul übernimmt die Interpretation von angeforderten Perl-Webseiten *.pl und übergibt das Produkt (Webseite, Grafik, ...) an den Webserver.

Ein guter Webserver speichert das übersetzte (compilierte) Perl-Programm für einige Zeit. Wenn später die gleiche Webseite nochmals angefordert wird, dann verwendet der Server die compilierte Version, die blitzschnell verfügbar ist.

Dokumentation

Alle Perl-Distibutionen bieten oder enthalten eine umfangreiche Dokumentation inklusive einiger Tutorials zu speziellen Themen. Man sollte die Doku keinesfalls von jenem Pfad entfernen, auf dem sie installiert wurde, da alle zusätzlich installierten Module ihre eigene Doku darin integrieren wollen.

Die beste Perl-Doku bietet derzeit Perl.org. Man kann sie unabhängig vom Perl Interpreter-Programm laden, jedoch leider nur auf einem Linux-PC auspacken (Windows kann große und kleine Buchstaben in Datei-Namen nicht unterscheiden...).
Wenn die Doku auf einem → Linux Webserver installiert ist, kann man sie jedoch auf jedem (auch Windows)-PC im lokalen Netzwerk problemlos verwenden.

Perl: AnwenderInnen-Programme, Konsole, CGI-Webseiten

CGI

Perl-Programme werden häufig zur Erstellung von dynamischen Webseiten verwendet. Solche Webseiten liegen nicht als Dateien *.htm vor, sondern sie werden nach Bedarf erzeugt.
Diese Methode erfordert normalerweise den Einsatz eines Webservers (z.B. → Apache). Der Webserver lauscht (listen) auf Anfragen von Browsern und sendet die jeweils gewünschte Webseite zurück.
Wenn eine dynamische Webseite verlangt wurde, dann muss diese zuerst (von Perl) erzeugt werden. Der Webserver übergibt dazu das jeweilige Perl-Script *.pl an das Perl Interpreter-Programm.
Der Interpreter arbeitet in diesem Fall als Hilfs-Programm (Common Gateway Interface, → CGI) für den Webserver.
Die Ausgabe besteht aus HTML-Quelltext (z.B. <html><body>Test</body></html> ).
Dieser Text wird vom Webserver an den Browser gesendet und dort als Webseite angezeigt.
Das ist komplizierter als die Übersendung einer HTML-Datei *.html und wird nur dann eingesetzt, wenn die Vorteile (rechts) zum Tragen kommen.

Der Vorteil liegt in der Möglichkeit, die Webseite variabel zu gestalten, d.h. genau nach Bedarf. Ein Beispiel ist die Arbeit mit einer Datenbank, z.B. einer Suchmaschine: Je nach Anfrage muss die Ausgabe-Webseite unterschiedliche Texte und Links enthalten.
Ein weiteres Beispiel ist die Herstellung von Webseiten-Programmen: Man stattet dynamische Webseiten mit Bedienungs-Elementen aus und kann sie als AnwenderInnen-Programme für jede denkbare Arbeit einsetzen. Solche Webseiten-Programme werden zur Konfiguration und Bedienung in viele Geräte (Modems, Router, .. ) fix eingebaut. Der riesige Aufwand zur Programmierung der Fenster fällt weg. Da Webseiten unabhängig von Betriebssystem und Version sind, kann zur Bedienung jeder beliebige Browser verwendet werden.

Hinweis:
Mit Perl Programmen kann man nicht nur lesbare Texte und Webseiten erzeugen, sondern fast beliebige andere Objekte, z.B. Bilder, Sounds, usw.
CGI-Programme können auch mit anderen Programmiersprachen erzeugt werden, z.B. mit → Java, → PHP, C++ usw.

AnwenderInnen-Programme

Standard-Programme (Browser, Textverarbeitung, Kalkulation, Grafik, ...) mit Fenstern und Maus-Bedienung werden normalerweise nicht mit Perl programmiert, obwohl das theoretisch möglich wäre.
Solche Programme sind so umfangreich, dass eine rasche und einfache Programmierung ohnehin nicht möglich ist. In diesem Fall überwiegen die Nachteile der Interpreter-Technik.

Allerdings gibt es eine sehr komfortable Möglichkeit, diesen Nachteil zu umgehen:
Mit Perl CGI-Programmen (nächster Absatz) lassen sich rasch und einfach dynamische Webseiten erzeugen.
In diesem Fall verwendet man die überall verfügbaren Browser-Programme zur Verwaltung der Fenster. Solche Webseiten lassen sich mit Bedienungs-Elementen ausstatten und arbeiten dann als Webseiten-Programme.

Konsolen-Programme

Einfache Perl-Programme laufen in einem → Konsolen-Fenster (z.B. Linux-Shell oder Windows-'Eingabeaufforderung' cmd.exe ).
Solche Programme sind besonders rasch, einfach und daher kostengünstig herzustellen.
Die technischen Möglichkeiten sind fast unbegrenzt: Mit Perl Programmen kann man z.B. → Dateien lesen und schreiben, Live → Webseiten lesen und analysieren, auf alle Resourcen des Betriebssystems zugreifen, Mail senden, usw.

Perl Konsolen-Programme lassen sich ausgezeichnet automatisieren: Sie können andere Programme aufrufen, selbst von anderen Programmen gestartet werden, nach Zeit (scheduler) oder Ereignissen gesteuert werden, usw.
Perl Programme sind unabhängig vom Betriebssystem - Das gleiche Programm kann z.B. wahlweise auf Linux oder Windows laufen. Davon ausgenommen sind nur jene Teile, in denen sich die Betriebssysteme erheblich unterscheiden. Perl kann z.B. auf die Windows → Registry-Datenbank zugreifen, diese gibt es auf Linux jedoch nicht.
Perl Programme werden daher oft für Verwaltungs-Arbeiten eingesetzt.

Perl:   Reguläre Ausdrücke - Jokes ...

Reguläre Ausdrücke (RegExp)

sind eine besondere Stärke von Perl.
Diese Technologie ermöglicht die Verarbeitung (Suchen, Isolieren, Ersetzen, ...) von Texten in besonders rascher und kompakter Form. Die Bedeutung nimmt laufend zu, da in der Informatik immer mehr Binär-Produkte durch Texte (z.B. Script-Programme, → HTML-Webseiten, → XML) ersetzt werden.
Das Linux Betriebssystem und alle modernen Programmiersprachen bieten Unterstützung für Reguläre Ausdrücke. Nach wie vor ist jedoch Perl führend bei der schnellen und effizienten Verarbeitung von Texten.

Details zu Regulären Ausdrücken

Perl Freaks

Perl zeigt mehr ausgeprägte Individualität als andere Programmiersprachen. Kreative EntwicklerInnen werden von Perl besonders angezogen und verwenden Perl zu allen möglichen Späßen.
Obfuscating ist der Versuch, ein kleines (Perl)-Programm so zu formulieren, dass auch Fachleute nicht dahinter kommen, was es eigentlich tut.
JAPHs sind Programme, deren Zweck man sogar kennt (Ausgabe eines kurzen Textes), die man aber trotzdem nicht erklären kann.
OneLiner sind (Perl)-Programme, die möglichst viel Funktionalität in einer einzigen Programmzeile unterbrinden.
ACME ist eine ganze Familie von Perl-Modulen, ausschließlich fär Fun-Zwecke.
Kostprobe: Ein funktionierendes Perl-(Konsolen)-Programm
print map { chr } ('10611711511603209711011111610410'.
'1114032112101114108032104097099107101114') =~ /.../g;

Perl-Links Ausgewählte Links zum Thema 'Perl'

Perl.org: Doku, Links, Tipps
perl.com Perl.com von O'Reilly: Info, Doku, Download, Tipps
ActiveState: ActivePerl Download (Linux, MacOSX, Solaris, Windows)
Strawberry Perl (Windows Perl Interpreter)
CPAN (Comprehensive Perl Archive Network) - Sammlung von Perl Modulen
mod_perl bei Apache.org: Perl als Modul für den Apache Webserver
Perlpad (Sourceforge) für MacOSX
MacPerl.com: Perl für MacOS
Perl Mongers: Perl user groups
Perl Monks: Perl forum, Tutorials, Code, Snippets
RocketAware: Perl docs and FAQs
Perl-Seiten bei t-online (de) + Download von Heike Grote
eXtropia: Intro to Perl 5,
Georgia Institute of Technology: Perl Tutorial (en)
PageResource: Beginning Perl Tutorials
Farid Hajji: Perl Einführung
Pro-Linux (Felix Gertz): Programmieren mit Perl/Tk (de)
Webmonkey: Intro to mod_perl
Wikipedia Wikipedia: Perl (de, en), mod_perl, Larry Wall,

Perl-Erfinder Larry Wall: Privat, Perl, Interview (Linux Journal), Vortrag (Perl - Postmodern Computer Language)
Notepad++ als ausgezeichneter kostenfreier Perl-Editor für Windows.
Perl-Compiler: perl.com und Heise (de)
Westchester University - PerlPHP Translation
 

XHTML CSS