|
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
|
Scripts für CGI und Systemverwaltung |
| 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"; |
|
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"; $mymail = ich@gmx.net
|
echoAn 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
auf Windows und im Internet in der Original Perl-Doku unter
perldoc -f sprintf |
$x = 12345;
Ergebnis:
printf "\$x = %d. = hex %x <br />\n",$x,$x; $x = 12345. = hex 3039
|
|
|
|
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
print "Content-type: text/html\n\n";#!c:\programme\perl\bin\perl.exe print <<'HTML_Block';
<html>
HTML_Block
<!-- made by pstrainer@gmx.net --> <head> <title>Testseite</title> </head> <body> Das ist eine Webseite <br /> </body> </html> 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ür einen Absatz";print $q->p($text); print $q->end_html; |
Einbettung einer (Perl)-Webseite als <iframe> oder <object> |
|
|
Mit Server-Programmen (z.B. in Perl oder
PHP) lassen sich beliebig komplexe
Webseiten programmiert herstellen. |
|
|
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> |
|
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. |
|