Perl-Scripts und Webseiten

Verschiedene Methoden zur Ausgabe von HTML

Eine häufige Anwendung von Perl ist die Erstellung von Webseiten.
Perl wird in diesem Fall als Hilfsprogramm des Webservers eingesetzt.
Dazu bietet Perl verschiedene Methoden, von denen einige hier demonstriert werden.
Perl Perl Scripts für CGI und Systemverwaltung
print Ausgabe von HTML-Code mit Anweisung print
printf Formatierte Ausgabe mit Anweisung printf
Ausgabe-Block Ausgabe eines 'multiline-strings' (Here-Block)
CGI-Modul Verwendung des Perl-Moduls CGI
Einbettung Einbettung von Perl-Webseiten als <iframe> oder <object>
Perl Module Zusatz-Module zur Erzeugung von HTML-Code
Verwandte Themen:
Statische Webseiten 'programmiert' erstellen
Live-Webseiten lesen und Informationen entnehmen

Ausgabe mit Befehl print

Die erste Zeile jedes Perl-CGI-Programms enthält den 'Shebang':
Die Zeichen #! gefolgt vom Pfad zu jenem Programm, an welches das Script zur Ausführung übergeben werden soll (Perl-Interpreter).
Dieser Pfad muss auch auf Windows angegeben werden: Vertauschen sie in diesem Fall die beiden ersten Zeilen.
Die Standard-Methode zur Ausgabe von Text benutzt den Befehl print
Die erste Ausgabe-Zeile teilt dem Webserver die MIME-Type des nachfolgenden Textes mit und muss genauso ausgeführt werden (2mal \n ) wie rechts gezeigt.
Alle weiteren Ausgabe-Befehle erzeugen eine Minimal-Webseite.
Die Zeilen-Trennzeichen ( \n ) sind für HTML nicht nötig, aber sie erleichtern die Lesbarkeit des HTML-Quelltextes.

Das Ergebnis dieses Perl-Programms sehen sie rechts als HTML-<iframe> eingebettet oder hier als Link.
Rechts-klicken sie das Objekt, um den HTML-Quelltext der Seite anzusehen.
#!/usr/bin/perl
#!c:\programme\perl\bin\perl.exe
print "Content-type: text/html\n\n";
print "<html>\n";
print "<head>\n";
print "<title>Demo-Webseite</title>\n";
print "</head>\n";
print "<body>\n";
print "Das ist eine Webseite<br />\n";
print "</body>\n";
print "</html>\n";
Ergebnis:
Wenden sie diese Methode an, um einfache Demo-Scripts oder einzelne kurze Ausgabe-Texte zu erzeugen.

Maskierung:
Sonderzeichen ($,@,\, usw.) müssen mit vorangestelltem Zeichen '\' maskiert werden.
Beachten sie, dass \$mymail als Text interpretiert wird, $mymail dagegen als Variable.

HTML-<br />
Für die Ausgabe von Texten an die Konsole oder an Dateien genügt als Zeilen-Umbruch \n, für Webseiten verwenden sie <br />\n am besten in der XHTML-kompatiblen Form (und nicht als <br> ).
# Mail an ich@gmx.net
$mymail = "ich\@gmx.net";
print "\$mymail = $mymail <br />\n";
Ergebnis:
$mymail = ich@gmx.net

echo

An Stelle von print kann alternativ die Anweisung echo verwendet werden.
In diesem Web wird ausschließlich print verwendet.
print "Hier ist Perl ! <br />\n";
echo("Hier ist Perl !<br />\n");

Formatierte Ausgabe mit Befehl printf

printf steuert die Ausgabe durch einen "Format-String". Alle Zeichen dieses Strings werden 'für sich selbst' ausgegeben, darin enthaltene 'Platzhalter' werden durch die Werte der nachfolgenden Variablen ersetzt.
Details erhalten sie auf Linux mit
perldoc -f printf
perldoc -f sprintf
auf Windows und im Internet in der Original Perl-Doku unter
$x = 12345;
printf "\$x = %d. = hex %x <br />\n",$x,$x;
Ergebnis:
$x = 12345. = hex 3039
printf SelfHTML bietet eine ausführliche Liste der Platzhalter mit Beispielen.  

Ausgabe eines Text-Blocks als 'multiline-string'

Längere HTML-Passagen werden am besten mit dieser Methode erstellt, die man auch unter der Bezeichnung 'Here-document' findet.. Damit kann man besonders einfachen und übersichtlichen Code verwenden.

Ein multiline string beginnt mit <<, gefolgt von einer TextMarke und einem Strichpunkt. Der Name (hier HTML_Block ) kann beliebig gewählt werden und wird in quotes eingeschlossen.
Ein derartiger String kann beliebig verwendet werden, z.B. hier für die Ausgabe mit print.

Perl gibt den gesamten folgenden Text aus, solange bis die EndMarke gefunden wird. Dabei werden alle Zeichen genauso übernommen wie im Text enthalten. Sonderzeichen werden nicht mit vorangestelltem '\' maskiert !

Die Endmarke muss allein in einer eigenen Zeile stehen, ohne irgendwelche andere Zeichen davor oder danach.

Wenn der Blockname nicht in quotes eingeschlossen wird, dann werden im Text auftretende Variablen-Namen durch ihre aktuellen Werte ersetzt.
Sonderzeichen müssen in diesem Fall mit '\' maskiert werden !

Das Ergebnis dieses Perl-Programms sehen sie rechts als HTML-<iframe> eingebettet oder hier als Link.
Rechts-klicken sie das Objekt, um den HTML-Quelltext der Seite anzusehen.
#!/usr/bin/perl
#!c:\programme\perl\bin\perl.exe
print "Content-type: text/html\n\n";
print <<'HTML_Block';
<html>
<!-- made by pstrainer@gmx.net -->
<head>
<title>Testseite</title>
</head>
<body>
Das ist eine Webseite <br />
</body>
</html>
HTML_Block

Ergebnis:

Verwendung des CGI-Moduls

Wenn sie das Perl CGI-Modul verwenden, dann steht ihnen weitere praktische Methoden zur Verfügung:

start_html bzw. end_html führen alle üblichen Arbeiten am Beginn und Ende einer Webseite aus.

Die weiteren Beispiele zeigen, wie man mit print-Befehlen beliebige HTML-Elemente (hier z.B. h1,div,p, ...) ausgeben kann. Der Inhalt des jeweiligen Elements wird als Argument in () übergeben. Optional kann man auch mehrere Elemente mit einem einzigen print-Befehl erzeugen.

Das Ergebnis dieses Perl-Programms sehen sie rechts als HTML-<iframe> eingebettet oder hier als Link.
Rechts-klicken sie das Objekt, um den HTML-Quelltext der Seite anzusehen.
#!/usr/bin/perl
#!c:\programme\perl\bin\perl.exe
use CGI;
my $q = new CGI;
print $q->header;
print $q->start_html('use CGI');
print $q->h1('CGI-Modul'),
$q->div('Demo einiger CGI-Funktionen');
my $text = "Text f&uuml;r einen Absatz";
print $q->p($text);
print $q->end_html;
Ergebnis:

Einbettung einer (Perl)-Webseite als <iframe> oder <object>

Mit Server-Programmen (z.B. in Perl oder PHP) lassen sich beliebig komplexe Webseiten programmiert herstellen.
Ein Nachteil ist jedoch die im Vergleich zu statischen Webseiten ( = Text-Dateien *.html ) höhere Belastung des Webservers.
Es ist ein guter Kompromiss, nur die dynamischen Teile einer Webseite mit Server-Programmen herzustellen. Diese Teile werden als <iframe> oder <object> in eine gewöhnliche Webseite eingebettet.
HTML-Code für einen Perl-<iframe>:
<iframe src="/cgi-bin/demo.pl">
Ihr Browser kann keinen iframe anzeigen
</iframe>
HTML-Code für ein Perl--<object>:
<object data="/cgi-bin/demo.pl" type="text/html">
Ihr Browser kann kein object anzeigen
</object>
Ihr Browser kann ein Objekt der Type text/html nicht anzeigen
In beiden Beispielen wird die gleiche Webseite angefordert.
Alternativ: Webseite mit einem Link anfordern.

Als <object> können sie übrigens nicht nur HTML-Webseiten, sondern auch Texte, Bilder usw. einbetten.
Details zum Thema HTML-<object>

Ein <iframe> hat den Vorteil, dass sein Inhalt mit DOM-Methoden nachgeladen oder wie ein Wechsel-Rahmen ausgetauscht werden kann.
Details zum Thema HTML-<iframe>
In den Demo-Beispielen sind die eingebetteten Webseiten blau <iframe> bzw. rot <object> hervorgehoben.
Alternativ lassen sich Webseiten auch rand- und fugenlos einbetten.

In diesem Web wird häufig die Technik der Einbettung verwendet, z.B. für Tabellen von Daten. Das hat u.a. den Vorteil, dass die eingebettenen Teile mehrfach, d.h. auch in anderen Webseiten verwendet werden können.

Perl-Module

Perl bietet eine große Anzahl zusätzlicher Module mit spezialisierten Funktionen.
Am Server ihres Web-Providers können sie keine Module installieren, für den eigenen Gebrauch können die Module jedoch praktische Funktionen enthalten, die evtl. viel Arbeit sparen.
Viele Module bieten Unterstützung zur Herstellung spezieller Objekte, z.B. Formulare, Tabellen, etc.
Beispiele für Stichworte bei der Suche nach Modulen:
cgi, form, html, javascript, map, report, table, www, ..