Perl
Perl ist eine freie, plattformunabhängige und interpretierte Programmiersprache.
Der Linguist Larry Wall entwarf sie 1987 als Synthese aus C, den UNIX-Befehlen und anderen Einflüssen. Ursprünglich als Werkzeug zur System- und Netzwerkadministration vorgesehen, hat Perl auch bei der Entwicklung von Webanwendungen und in der Bioinformatik weite Verbreitung gefunden. Hauptziele sind eine schnelle Problemlösung und größtmögliche Freiheit für Programmierer. Der Umgang mit Texten und viele frei verfügbare Module sind Stärken der Sprache.
Der Name Perl bezieht sich auf ein Zitat aus dem Matthäus-Evangelium [13,46], wo Jesus das Himmelreich mit dem Bild eines Händlers beschreibt, der seinen gesamten Besitz verkaufen will, um eine kostbare Perle zu erwerben. Noch vor der Veröffentlichung wurde der Name von Pearl in Perl geändert, da es bereits eine Sprache namens Pearl gab. Allgemein verbreitet und von Larry Wall akzeptiert sind auch die Backronyme Practical Extraction and Report Language und Pathologically Eclectic Rubbish Lister. Die Schreibweise „Perl“ bezeichnet die Sprache, „perl“ dagegen das Programm, das diese Sprache interpretiert.
Prinzipien
Perl wurde für den praktischen Einsatz entwickelt und konzentriert sich daher auf einfache Programmierbarkeit, Vollständigkeit, Effizienz und Anpassbarkeit. Diese Philosophie drückt sich in den folgenden Schlagworten oder Phrasen aus, die meist von Larry Wall stammen.
Das bekannteste und grundlegendste Perl-Motto ist „There is more than one way to do it“ (kurz: TIMTOWTDI, gesprochen „Tim Today“). Zu deutsch: „Es gibt mehr als einen Weg, etwas zu tun“. Perl macht im Gegensatz zu Sprachen wie Python weniger Vorgaben und bietet absichtlich für jedes Problem mehrere Formulierungs- und Lösungsmöglichkeiten. Zum Beispiel kann man logische Operatoren als || und && (wie in C) oder (mit Bedeutungsnuancen) als or und and (wie in Pascal) schreiben; aber auch zahlreiche Befehle mit einem sich überschneidenden Funktionsumfang wie map und for erlauben verschiedene Formulierungen für den gleichen Sachverhalt. Einige Befehle wie der Diamant-Operator (<>) bieten verkürzte Schreibweisen für bereits vorhandene Funktionalität.
Dass Vielfalt eine erklärte Tugend der Perl-Kultur ist, wird auch im CPAN sichtbar, wo oft mehrere Module einen sehr ähnlichen Zweck erfüllen. Dies alles erlaubt dem Programmierer nicht nur das Schreiben maßgeschneiderter Software, sondern bietet auch die Freiheit, persönlichen Vorlieben nachzugehen, was für manche ein wichtiger Grund ist, sich für Perl zu entscheiden.
Eine weiteres Schlagwort, das man auch als Erweiterung von TIMTOWTDI sehen kann, bezeichnet Perl als die erste postmoderne Programmiersprache. Damit ist gemeint, dass Perl verschiedene Paradigmen vereint und es dem Benutzer frei steht, strukturierte, objektorientierte, funktionale und imperative Sprachmerkmale zu kombinieren.
Perl erlaubt freies Formatieren des Quellcodes. Das bedeutet, dass Einrückungen und zusätzliche Leerzeichen syntaktisch unerheblich sind und auch Zeilenumbrüche nach Belieben eingefügt werden können. Logische Konsequenz dieser Freiheit ist die Notwendigkeit, jeden Befehl mit einem Semikolon abzuschließen.
CGI
Die CGI-Schnittstelle (Common Gateway Interface – in etwa Allgemeine Vermittlungsrechner-Schnittstelle) ist ein Standard im Web für den Datenaustausch zwischen auf Webservern bereitstehenden Programmen (Scripts) und den sie aufrufenden Webbrowsern. Hierbei können die serverseitigen Programme, die z.B. von HTML-Dateien aus aufgerufen werden können, sowohl Daten vom Browser empfangen (etwa Formulareinträge) als auch neu generierte Daten an den Browser verschicken (etwa eine HTML-Seite). CGI ist also eine schon länger bestehende Variante, Webseiten dynamisch bzw. interaktiv zu machen.
Um die CGI-Schnittstelle zu verwenden, muss diese von der Webserver-Software unterstützt werden. Dabei ist wichtig, dass diese Software dem Programm/Script immer 3 Dinge zur Verfügung stellt:
- Umgebungsvariablen (z.B. SERVER_NAME), deren Inhalte dem Programm
helfen, sich „vor Ort“ zu orientieren und über aktuelle Einstellungen zu
informieren.
- Weiterleitung von Ausgaben, meistens als dynamisch erzeugte HTML-Seite
(oder Seitenteile), aber auch als Einträge in Fehlerprotokolldateien.
- Einholen von Formulareingaben oder Aufrufparametern z.B. aus HTML-
Seiten, damit das CGI-Programm/-Script auf diese reagieren kann. Dabei
können solche Daten als Umgebungsvariable (GET-Methode) oder über
einen Eingabe-Kanal (POST-Methode) Eingang ins Programm/Script finden,
wobei letztere Möglichkeit sicherer ist.
Wie diese Daten strukturiert sind, ist die eigentliche Schnittstellenbeschreibung (deshalb „interface“).
CGI-Programme können also in allen möglichen Programmiersprachen geschrieben sein. Es muss lediglich auf dem Server ein entsprechender Laufzeitinterpreter vorhanden sein, oder das Programm muss für das Serverbetriebssystem kompiliert worden sein. Am weitesten verbreitet ist hierbei Perl.