Tag auch!
So, $path gibt den Pfad von cgi-bin zum htdocs Ordner an (dabei sollte man wissen, dass sich im root Ordner der htdocs und der cgi-bin Ordner befindet und nicht wie übliche, der root Ordner, der htdocs Ordner ist und den cgi-bin Ordner beihnaltet [was das zu kompliziert ausgedürck ?]) JOJO
Wolltest Du sagen, dass Du die Directories c:/xitami/htdocs/root/ und c:/xitami/htdocs/cgi-bin/ hast? ;-)
Also es werden drei Dateien ausgelesen. In diesen Dateien sind auch Variablen gespeichert. Und zwar wird die Variable $path verwendet, um den Pfad der Bilder anzugeben, die in dieser Datei vorkommen.
Na jedenfalls geben ich die Variablen in "-Zeichen aus und die anstatt den Variablenwert einzusetzen, wird nur der Variablenname ausgegeben. Wie kommt das ?
Du meinst, im Inhalt der Datei gibt es Stellen, die wie z.B. <A HREF="$root/laberblubb..."> aussehen, es wird aber ganz genau das ausgegeben, was in den Dateien steht? Dann liegt da wohl ein Missverstaendnis vor. Denn die Variablen in Anfuehrungszeichen werden schon ganz richtig aufgeloest. Nur handelt es sich dabei nicht um das $path in der Datei, sondern um die Variablen @top, @content und @bottom. Wuerden sie nicht aufgeloest werden, wuerdest Du tatsaechlich nur diese 19 Zeichen @top@content@bottom bekommen. Aber da sie ganz richtig aufgeloest werden, wird eben der Inhalt dieser Variablen ausgegeben. Aber nicht rekursiv bis der Arzt kommt, sondern nur genau ein mal.
Offensichtlich willst Du einfach ein paar Templates verwenden und da noch ein paar Variablen einsetzen. Ich mache das gewoehnlich so, dass ich in den Dateien Dinge wie <A HREF="<%% ROOT %%>/laberblubb"> notiere, im Script einen Hash mit all den verfuegbaren Daten anlege:
%TemplateData = (
'PATH' => 'c:/xitami/htdocs/',
'ROOT' => 'http://localhost/'
);
und dann auf den eingelesenen Dateiinhalt mit einem Ausdruck wie diesem losgehe:
for (@template) {
s/<%%\s*(\S+?)\s*%%>/$TemplateData{uc($1)}/g;
}
#!/usr/bin/perl
$path = "c:/xitami/htdocs/";
$file = $ENV{QUERY_STRING};
WARNING! SECURITY RISK!
Ein Angreifer kan *irgendeinen* Dateinamen im QueryString uebergeben.
So long