Perl im cgi-bin
Common Gateway Interface
Perl ist eine Scriptsprache (wie PHP) zur serverseitigen Informations-Aufbereitung. CGI heisst Common Gateway Interface (Allgemeine Datenaustausch Schnittstelle).
cgi-bin
- Mein Perl-Script (welches die Anweisungen für den Interpreter beinhaltet) mit der Endung meinscript.pl oder meinscript.cgi lege ich in einem vom Hostcenter vorgegebenen Ordner ab mit der Bezeichnung cgi-bin.
- Es wird auf dem Server ein Programm benötigt, der Perl-Interpreter, welches meine Perl-Scripte liest, verarbeitet und zurückgibt.
- Das Perl-Script wird zum Beispiel durch eine Formular Aktion aus angerufen
- Perl kann (da serverseitig) Dateien auf dem Server verändern
- Der Code wird nicht in die HTML Datei geschrieben (wie Javascript oder PHP), es sind immer eigene Script-Dateien
Bekannteste Beispiele in Pearl sind: Besucherzähler (img_counter.pl), Mailform (mailform.pl), Postkarte, RandomLink
Pearl ist aber nicht ausschliesslich fürs Internet: ein Perl-Script (via Kommandozeile) kann auch auf einem Rechner Backups organisieren, die Auslastung analysieren, in Dateien nach etwas suchen.
Zeile 1 eines Perl-Scripts
#!/usr/bin/perl -w
Die Anweisung zur Lage des Perl-Interpreters auf dem Server beginnt mit den Zeichen #!, der so genannten shebang, gefolgt von der Pfadangabe /usr/bin/ und dem Namen des Perl-Interpreters perl. Optional kann, durch Leerraum getrennt -w am Ende notiert werden, um neben den Fehlermeldungen auch Warnungen ausgeben zu lassen.
Dies bei Unix Server Systemen, und zwar dann, wenn die Perl-Datei auf den Modus "ausführbar" (chmod 755) gesetzt ist (CHMOD). Bei MS Windows Rechnern (nicht unbedingt ein Server) sieht die Zeile 1 z.B. so aus:
#!C:/programme/perl/bin/perl.exe
Weitere Zeilen
use strict;
keine unsicheren Konstrukte akzeptieren, bevor das Script ausführt wird (z.B. nicht definierte Variablen)
use CGI::Carp qw(fatalsToBrowser);
ein spezielles Modul einbinden, das beim Abbruch des Scripts die Fehlerursache direkt an den Browser übergibt
Perl Beispiel für Heredoc
Ist sehr PHP ähnlich, aber nicht damit identisch. PHP ist aus Perl entstanden und für die Kombination mit HTML optimiert, Perl kann nicht in HTML eingebunden werden, die Scripts sind immer als eine eigene Datei hinterlegt. Aber es kann HTML in Perl eingebunden werden (nach obigen 2 Zeilen folgt):
my $Einleitung = "Weniger print Befehle";
# HTP Header
print "Content-type: text/html\n\n";
print <<"ENDE";
<html><head><title>Testausgabe</title></head><body>
<h1>$Einleitung</h1>
<p>Der Vorteil bei dieser Form ist, dass man viel HTML-Code
auf einmal erzeugen kann, ohne einen einzigen weiteren print-Befehl
in Perl zu notieren. Praktisch beispielsweise auch zum Ausgeben
von JavaScript:</p>
<script type="text/javascript">
document.write("<p>Und die Adresse dieser HTML-Datenquelle lautet: ");
document.write(document.URL+"<\/p>");
</script>
</body></html>
ENDE
(Nach ENDE unbedingt ein Zeilenumbruch!)
Die Datei muss in den cgi-bin Ordner auf dem Server, sonst funktioniert es nicht.
Ich verzichte im Moment auf ein eingehenderes Studium von Perl, PHP ist inzwischen viel weiter verbreitet.