Perl |
|
|
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-Kompress |
|
ScriptPerl-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. |
InterpreterDer 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-ProgrammeWenn 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-ProgrammeTheoretisch könnte man mit Perl auch Programme zur Textverarbeitung, Bildbearbeitung oder PC-Spiele herstellen. Das ist jedoch derzeit nicht die Stärke von Perl. |
ProgrammiersprachePerl 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, ... |
ModuleWie 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. |
GeschichtePerl 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 |
|
ScriptPerl-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 ! |
InterpreterZur 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. 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-CodeDer 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. |
CompilerEs 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. • 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-ModulDas 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. |
DokumentationAlle 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 |
|
CGIPerl-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-ProgrammeStandard-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. |
Einfache Perl-Programme laufen in einem
→
Konsolen-Fenster (z.B. Linux-Shell oder
Windows-'Eingabeaufforderung'
cmd.exe ). |
• 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 FreaksPerl 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.org: Doku, Links, Tipps
Perl.com
von O'Reilly: Info, Doku, Download, TippsActiveState: 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: 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 - Perl ↔ PHP Translation |
|
|
|