Hi again!
Nein, ich lese mit meinem CGI-Prog eine Datei ein, welche SSI nutzt, bearbeite sie ein wenig (damit ist _kein_ SSI-Parsing gemeint!) und will sie dann mitsamt den SSI-Befehlen wieder ausgeben ("Content-type: ??????\n\n$bearbeitetedatei").
Ach so, jetz hab ich's auch kapiert. Naja, bisher war die Argumentation so, dass man das bisschen SSI-Parsing ja auch selber machen kann, wenn man schon CGI-scriptet. Und das stimmt auch, zumindest wenn man Perl benutzt. Ich hatte mir da mal ne kleine Routine geschrieben, um das #include file durchzufuehren, vielleicht nuetzt sie Dir ja was:
use FileHandle;
_ParseSSI($shtml)
sub _ParseSSI($) {
my $shtml = ref($_[0]) ? shift : $_[0];
my ($incfile, $inctext);
my $fh;
$fh = FileHandle->new();
while ($$shtml =~ /<!--\s*#include\s+file\s*=\s*"(.*?)"\s*-->/is) {
$incfile = $1;
$incfile = (($incfile =~ m^/) ? $gSSIRootDir : $gSSIWorkDir) . "/$incfile";
if ($fh->open("<$incfile")) {
local $/; undef $/;
$inctext = <$fh>;
$fh->close();
} else {
$inctext = "SSI error: Cannot open include file '$incfile' (Reason: $!)";
::error(__PACKAGE__ . ": $inctext");
}
$$shtml =~ s/<!--\s*#include\s+file\s*=\s*".*?"\s*-->/$inctext/is;
}
return $shtml;
}
Ist ein bisschen an ein Projekt von mir angepasst. Eine ::error Funktion wird's bei Dir nicht geben, nimm stattdessen warn.
$gSSIRootDir und $gSSIWorkDir sind Config Variablen, die die Verzeichnisse enthalten, in denen die dateien gesucht werden. Dabei wird $gSSIRootDir verwendet, wenn der file="" Pfad mit / anfaengt, anderfalls $gSSIWorkDir.
Die anderen SSI-Kommandos hab ich halt noch nie gebraucht. *g*
So long