Per Perl SSi ausgeben?
christian
- perl
Hi,
kann ich per Perl quasi eine SHTML-Datei ausgeben (also eine Datei in der ich SSI-Befehle verwenden kann)?
Wenn ja muss ich dann "Content-type: text/shtml\n\n" statt text/html schreiben?
MfG
christian
Hallo
ich glaube nicht, dass das funktioniert.
Und zwar weil dein Perl-Skript den Quellcode gleich an den Browser schickt. Der Browser hat aber nichts mit SSI zu tun, da dies vom Webserver geregelt wird.
Du könntest mit Perl versuchen, die SSI Funktion nachzuahmen.
Aber, ich lasse mich gerne eines Besseren belehren...
Tschö Matti
Hi,
Und zwar weil dein Perl-Skript den Quellcode gleich an den Browser schickt.
ich denke, es ist der Webserver, der das tut. (Ansonsten stimme ich Dir zu.)
Du könntest mit Perl versuchen, die SSI Funktion nachzuahmen.
Das ist auch die Standard-Reaktion beispielsweise im Apache-Handbuch auf diese Frage: Wozu brauchst Du SSI, wenn Du CGI darfst und damit viel mächtigere Operationen zur Verfügung hast?
Es ist eine Frage der Architektur des Webservers. Dieser enthält eine Abbildung, welche Dateien er mit welchem Verfahren behandeln soll. Ein einfaches Verfahren ist "ausgeben", also den Inhalt nicht ändern. Ein komplizierteres Verfahren ist "server-parsed", also SSI-Anweisungen interpretieren und das Ergebnis einfügen. Ein ganz anderes Verfahren ist "cgi-script", also den Inhalt des Skripts nicht lesen, sondern als Programm ausführen.
Es wäre sicherlich vorstellbar, einen Webserver zu schreiben, der die Ausgabe seines Verfahrens selbst wiederum als Eingabe eines weiteren Verfahrens nimmt. Aber welches Verfahren soll das sein? Die Ausgabe Deines CGI-Skripts ist keine Datei, hat also keinen Dateiamen. Wie soll der Webserver entscheiden, ob diese Ausgabe nun fertig ist oder noch einmal durch den SSI-handler gejagt werden muß?
Bedenke auch, daß die Behandlung eines Dokuments durch einen komplexen Handler Zeit kostet, und die beliebige häufige Behandlung des im wesentlichen immer gleichen Inhalts beliebig viel Zeit. Deshalb ist es sinnvoller, nur *einen* Durchgang zu machen und in diesem - wenn man denn schon mal alles tun darf - dann gleich die endgültige Ausgabe zu erzeugen. Und ein SSI-INCLUDE in z. B. Perl zu erledigen kann ja nicht so arg schwer sein.
mfG - Michael