CGI: Einführung
von Marcus Engelhardt
Perl zählt als die beliebteste Programmiersprache für das Common Gateway Interface ( CGI ) zu den am weitesten verbreiteten serverseitigen Skriptsprachen. Sie besitzt eine große Fülle von Funktionen und Modulen zur Verfügung und stellt somit eine Spieloase für Programmierer dar.
Das CGI (Common Gateway Interface) ist im weitesten Sinne ein standard bzw. eine Norm für eine serverseitige Programmierschnittstelle, die es beispielsweise ebenso wie PHP erlaubt, die vom Server zu übertragenden Inhalte nachhaltig zu verändern. Dies ist möglich, da derartige Scripts stets ausgeführt werden, bevor der Server Daten an der Browser übermittelt. CGI ist also keine Skriptsprache sondern ein Protokoll. CGI-Skripte können im Prinzip in jeder Programmiersprache verfasst werden, welche das Lesen von STDIN und das Schreiben auf STOUT sowie das Lesen von Umgebungsvariablen (Environment variables) ermöglichen.
So stellen dafür geeignete Skriptsprachen wie z.B. das beliebteste und universell einsetzbare Perl mit seiner Vielzahl von Funktionen und Modulen dem Programmierer Möglichkeiten bereit, die nahezu unerschöpflich sind.
Aufgrund der Tatsache, dass ein CGI-basierendes Skript stets auf dem Server und nicht clientseitig ausgeführt wird, ergeben sich Möglichkeiten, welche mit clientseitigen Skriptsprachen nicht realisierbar sind. So ist es beispielsweise möglich, Dateien auf Servern zu verändern bzw. zu erstellen oder auf Datenbanken zuzugreifen. Derartig modifizierbare Inhalte sind Grundlage für die meisten Bedürfnisse moderner Websites mit interaktiven Elementen wie beispielsweise Foren, Gästebücher oder Besucherzählern.
Die oben erläuterten Sachverhalte zeigen gleichzeitig die Schwächen von CGi-basierenden Skriptsprachen wie Perl auf: Sie sind auf das "Zusammenspiel" mit clientseitigen Skriptsprachen angewiesen, ohne die sie Informationen von Servern in keiner vernünftigen Art und Weise für den Clienten aufbereiten könnten. Eben weil sie serverseitig und vor allem vor der Ausgabe an den Browser ausgeführt werden, lassen sich mit CGI keine Objekte im Browserfenster des Besuchers animieren, dynamische Menüs oder andere Sachen, die mit Technologien wie DHTML möglich sind, erzeugen.
CGI und Perl werden heute fälschlicherweise oftmals im gleichen Atemzug genannt, obwohl dafür zweckmäßig als auch historisch kein unbedingter Zusammenhang besteht.
Nachdem die HTTP-Spezifikation entwickelt wurde, welche es erstmals ermöglichte, Daten zur Anzeige als Website zu bringen, wurde schnell klar, dass dies nicht ausreichend ist, um die schnell steigenden Bedürfnisse zu befriedigen. Man musste die Eigenschaft eines Servers herausbilden, Clienten zu erlauben auch Daten auf ihm speichern und modifizieren zu können. Aus dieser Idee heraus entstand das Common Gateway Interface, das sich bis heute behaupten konnte.
Die Skriptsprache Perl (practical extraction and report language) wurde 1987 von Larry Wall entwickelt. Die Bezeichnung der Sprache deutet bereits auf den ursprünglichen Zweck, nämlich dem Extrahieren von Informationen aus Dateien und der Aufbereitung dieser in einem "Report", hin. Bis dato vorhandene Programmiersprachen wie UNIX konnten aufgrund mangelnder Flexibilität diesen Anforderungen nur in Ansätzen gerecht werden.
Perl erfreute sich sofort nach seiner Veröffentlichung großer Beliebtheit und wurde aufgrund wiederum rasant steigender Anforderungen an die Programmiersprache auch von anderen Programmierern ständig weiterentwickelt. Dieser Prozess hält bis heute an.
Im Laufe der Zeit entstanden natürlich auch Alternativen zu CGI-basierenden Skriptsprachen. Der Fokus bei der (Weiter-)Entwicklung von Perl lag stets auf dem praktischen Nutzen, wodurch eine Vielzahl von Modulen entstand, welche einen schwer erfassbaren Umfang von CGI bedeuteten. Als Alternativen zu Perl wären in diesem Zusammenhang PHP und ASP zu nennen, welche in ihrer Handhabung benutzerfreundlicher - weil einfacher - sind. PHP drängte Perl in den letzten Jahren zwar stark zurück, war bisher aber nicht in der Lage, Perl vollständig zu verdrängen, was nicht zuletzt an der universellen Einsetzbarkeit von Perl liegt.