Elmar: Aufrufen von Perlscript mittels SSI

Hallo!

SSI-Befehle kenne ich, aber ich hätte folgende Frage:
Wenn ich meine Seite mittels SSI generieren lasse, also
in jede Seite die Navigation aus einer html-Datei lade,
funktioniert dies gut.
Wie sollte ich aber PERL-Scripte aufrufen ?
Für die Ausgabe der Scripte müsste doch auch wieder ein
Template erstellt werden ?
So sieht meine Testseite derzeit aus:

<html>
<head>
<title>Test für SSI</title>
</head>
<body>
<table align="center" width="800">
<tr>
<td colspan="2">
<!--#include virtual="/testbanner.html"-->
</td></tr>
<tr>
<td valign="top">
<!--#include virtual="/navi.htm"-->
</td>
<td>
Hier kommt der Code der ursprünglichen Seite hin.
Umwandlung in shtml.
</td></tr>
</table>
</body>
</html>

Momentan arbeite ich mit Frames, da ist das alles kein Problem...

Danke,
Elmar

  1. Hallo Elmar,

    Wie sollte ich aber PERL-Scripte aufrufen ?

    Zwei Möglichkeiten bei SSI:
    1. <!--#include virtual="/cgi-bin/script.pl?var=wert"-->
    2. <!--#exec cgi="/cgi-bin/script.pl"-->

    Mit der ersten Variante kannst du dein Script mit Parametern ausführen lassen, bei der zweiten nicht.

    Für die Ausgabe der Scripte müsste doch auch wieder ein
    Template erstellt werden ?

    Nicht unbedingt, du kannst aber mit HTML::Template arbeiten. Dann rufst du das Script direkt auf:
    <a href="/cgi-bin/script.pl?var=wert">Perl-Script</a>

    Deine Testseite speicherst du als seite.tmpl, die Ausgabe des Perl-Scripts sähe dann so aus:

    sub print_document {
      my $template = HTML::Template->new( filename => '../seite.tmpl');
      $template->param( PARAM1 => $_[0],
                        PARAM2 => $_[1]   # usw. usf.
                      );
      print "Content-Type: text/html\n\n", $template->output;
    }

    <td>
    Hier kommt der Code der ursprünglichen Seite hin.
    Umwandlung in shtml.
    </td></tr>

    <td><TMPL_VAR NAME="PARAM1"></td>
    <td><TMPL_VAR NAME="PARAM2"></td>

    usw. usf.

    Siehe: http://search.cpan.org/~samtregar/HTML-Template-2.6/Template.pm

    Grüße
    Torsten

    1. Danke Thorsten, ich werde mir das einmal zu Gemüte führen!

      Schönen Gruß,
      Elmar

      1. Hallo Elmar,

        eine Ergänzung noch, natürlich muss dein Perlscript beim Einbinden via SSI eine etwas andere Ausgabe liefern als normalerweise, also keine vollständige HTML-Datei, folgendes genügt:

        print "Content-type: text/html\n\n";

        der übrige Code, der an der Stelle erscheinen soll

        Grüße
        Torsten