Sebastian: Kann man Perl in Form von SSI direkt in HTML-Datei einbinden?

Hi Leute,

kann ich eigentlich Perl-Befehle wie bedingte Anweisungen eigentlich direkt in Form von ServerSideIncludes, wie etwa bei PHP, in den HTML-Quelltext einbinden. Wenn ja wie?
Ich möchte nämlich einige CGI-Umgebungsvariablen auf ihren Wert, also "true" oder "false", untersuchen und dann entsprechende Werte in den HTML-Quelltext einfügen lassen. Ich könnte mir zwar auch schnell das Perl-Skript dazu schreiben, bin aber gerade zu faul und wollte obiges wissen...

Danke Sebastian

  1. hallo Sebastian,

    kann ich eigentlich Perl-Befehle wie bedingte Anweisungen eigentlich direkt in Form von ServerSideIncludes, wie etwa bei PHP, in den HTML-Quelltext einbinden. Wenn ja wie?

    Prinzipiell kannst du per SSI CGI-Scripts aufrufen. Das geht mit "ExecCGI"  -  und wenn dein CGI-Script ein Perl_script ist, wird es ausgeführt.

    Eine weitere Möglichkeit gibt es mit "Perlscript"  -  du kannst PERL-Syntax ähnlich wie PHP-Code direkt in HTML schreiben. Allerdings muß dann der Server, bei dem deine Seite gehostet wird, ein paar Module vorhalten.
    Konkret kann so eine HTML-Seite so aussehen:

    <%@ LANGUAGE = PerlScript %>
    <html>
    <head>
    <TITLE>PerlScript Willkommen</TITLE>
    </head>
    <BODY BGCOLOR=#FFFFFF>

    <FONT SIZE=4>

    <SCRIPT language="PerlScript" RUNAT=Server>

    sub PrintWelcome {
     $window->document->write("<HR>  ");
     ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();
     $thisday=(Sonntag,Montag,Dienstag,Mittwoch,Donnerstag,Freitag,Sonnabend)[$wday];
     $thismon=(Januar,Februar,Maerz,April,Mai,Juni,Juli,August,September,Oktober,November,Dezember)[$mon];
     if ($hour < 10) {
      $window->document->write( "Guten Morgen!  ");
     } elsif ($hour < 18) {
      $window->document->write( "Guten Tag :-)  ");
     } else {
      $window->document->write( "Guten Abend!  ");
     };
     $time = sprintf '%d:%2.2d:%2.2d',$hour,$min,$sec;
     $year += 1900;
     $datetime = $time.' Uhr am '.$thisday.', '.$mday.'. '.$thismon.' '.$year;
     $window->document->write("<BR>  ");
     $window->document->write("Willkommen in der PerlScript-Welt.<BR>  ");
     $window->document->write("<BR>  ");
     $window->document->write("Falls du grade keine Uhr zur Hand hast, es ist jetzt<BR> ");
     $window->document->write($datetime);
     $window->document->write("<HR>  ");
    }

    PrintWelcome();

    </SCRIPT>
    </font>
    <p><font face="Arial" size="2">dieses script ist darauf angewiesen, daß der Rechner, auf dem es laufen soll, perl installiert hat</font></p>
    </BODY>
    </HTML>

    Das Ganze kann unter der Bezeichnung "EmbPerl" auch in diversen Dokumentationen gefunden werden.

    Grüße

    Christoph S.

    1. kleine Korrektur:

      Prinzipiell kannst du per SSI CGI-Scripts aufrufen. Das geht mit

      Bis dahin korrekt

      "ExecCGI"

      und _hier_ ist in der Schreibweise ein Freudscher Fehler unterlaufen (hab zuviel an den Apache gedacht). Richtig muß es geschrieben werden: "exec cgi" - siehe auch http://selfhtml.teamone.de/cgiperl/intro/ssi.htm#uebersicht

      CS

      1. Prinzipiell kannst du per SSI CGI-Scripts aufrufen. Das geht mit
        Bis dahin korrekt

        "ExecCGI"
        und _hier_ ist in der Schreibweise ein Freudscher Fehler unterlaufen (hab zuviel an den Apache gedacht). Richtig muß es geschrieben werden: "exec cgi"

        Wobei man vielleicht noch folgenden Satz aus der Apache-Anleitung anhängen sollte:

        "The include virtual element should be used in preference to exec cgi."
          http://httpd.apache.org/docs/mod/mod_include.html

        Gruß,
          soenk.e

  2. Aloha!

    Ich möchte nämlich einige CGI-Umgebungsvariablen auf ihren Wert, also "true" oder "false", untersuchen und dann entsprechende Werte in den HTML-Quelltext einfügen lassen. Ich könnte mir zwar auch schnell das Perl-Skript dazu schreiben, bin aber gerade zu faul und wollte obiges wissen...

    Du kannst in SSI auch bedingte Ausgaben erstellen (basierend auf z.B. Umgebungsvariablen), ohne eine einzige Zeile Perl zu schreiben. Das klappt natürlich nur bei den einfacheren Dingen, ist aber der Einbindung von Perl durchaus vorzuziehen, weil schneller ausführbar.

    http://httpd.apache.org/docs/howto/ssi.html#conditionalexpressions

    - Sven Rautenberg