HTML-Datei aus Perl-Script aufrufen
Tobias
- perl
0 Daniel Thoma0 Tobias0 Daniel Thoma0 Tobias
0 Tool-pi0 Sebastian v Enzberg
Hallo,
konkret behandelt das Skript eine Datenbankabfrage. Das Ergebnis wird mittels "open..." in eine Datei output.html geschrieben. Zu guter letzt soll das entsprechende CGI noch die generierte HTML-Datei aufrufen.
Wie lässt sich das realisieren ? Gibt es evtl. ein Problem bei mehreren parallelen Abfragen ?
Hallo Tobias,
was willst du genau?
open.html aus dem Perscript heraus öffnen oder es an den Browser schicken?
Wenn du es an den Browser schicken willst, dann schreib doch gleich mit print in die
Standartausgabe und die sache hat sich erledigt
MfG
Daniel
Hallo Tobias,
was willst du genau?
open.html aus dem Perscript heraus öffnen oder es an den Browser schicken?
Wenn du es an den Browser schicken willst, dann schreib doch gleich mit print in die
Standartausgabe und die sache hat sich erledigtMfG
Daniel
Vielen Dank für die Antwort.
Das mit der STDOUT ist sicherlich gut, so habe ich es bisher auch gemacht. DOch das neue Script soll wml behandeln. Wenn ich das Script aufrufe, bekomme ich die Fehlermeldung "invalid wml code" obwohl der header stimmen sollte die Datei sieht so aus: (Der wml-Code dient nur zum Test)
#!/usr/bin/perl
print "Content-type: text/plain", "\n\n";
print "<?xml version=1.0?>\n";
print "<wml>\n";
print " <template>\n";
print " <do type=prev>\n";
print " <prev/>\n";
print " </do>\n";
print " </template>\n";
print " <card title=title newcontext=true>\n";
print " <p>Was suchen Sie<br/></anchor>\n";
print " </p>\n";
print " </card>\n";
print "</wml>\n";
Hallo Tobias,
print "Content-type: text/plain", "\n\n";
Bist du dir sicher, daß der mimetype stimmt?
text/plain heißt eigendlich normaler text.
Versuch es lieber mal mit text/wml oder so was in der art.
Tschüs
Daniel
Hallo Tobias,
print "Content-type: text/plain", "\n\n";
Bist du dir sicher, daß der mimetype stimmt?
text/plain heißt eigendlich normaler text.
Versuch es lieber mal mit text/wml oder so was in der art.Tschüs
Daniel
Hallo,
habe schon alles versucht. Das "plain" ist ein Überbleibsel meiner vergebenen Versuche.
Tobias
Hallo Tobias,
Klapt es mit einer Seite mit *.wml?
Wenn ja, dann schau in der mime.types-datei deines Servers mal nach was da für *.wml steht
Tschüs
Daniel
Hi,
ich mache immer folgendes:
ausgabe datei einlesen............
in dieser datei sind sogenannte platzhalter <!--NAME--> (Comments)
dann habe ich ein Array...mit folgenden Werte wie die Platzhalter heissen.
Diese werden mittels Schleife und regulären Ausdrücken ersetzt.
Danach nur Print"Content-Type:text/html\n\n";
und den HTML-Code printen!
weiss jetzt nicht ob du mir folgen kannst?
Also:
open (FILE, $FILENAME) or die;
while (<FILE>){$TRASH .=$_;}
close (FILE);
@MEINEPLATZHALTER=('NAME','STRASSE');
for (@MEINEPLATZHALTER){
$PLATZHALTER="<!--".$_."-->";
$TRASH=~ s/$PLATZHALTER/$DEINWERT/g;
}
print "content-type:text/html\n\n";
print $TRASH;
so das war ein Ansatz den Rest musst Du um was zulernen selbst heraus finden, oder einfach hier
im Forum die Suche benutzen denn dort steht alles was du brauchst drin!
Tool-pi
hi nochmal
hier der nachschlag:
habe was wichtiges vergessen:
deine Werte:
z.b. in Array = @MEINEDATEN=('MEINNAME','Hier wohne ich');
jetzt den regulären Ausdruck ändern in der Schleife:
$TRASH=~ s/$MEINPLATZHALTER/{$MEINEDATEN[$i++]}/ge;
e= führe PerlCode während des Matching aus!
Wenn du nur auf eine HTML-Seite verweisen willst:
print "Location: /deinedatei.html\n\n";
Tool-pi
Hi,
ich mache immer folgendes:
ausgabe datei einlesen............
in dieser datei sind sogenannte platzhalter <!--NAME--> (Comments)dann habe ich ein Array...mit folgenden Werte wie die Platzhalter heissen.
Diese werden mittels Schleife und regulären Ausdrücken ersetzt.Danach nur Print"Content-Type:text/html\n\n";
und den HTML-Code printen!weiss jetzt nicht ob du mir folgen kannst?
Also:
open (FILE, $FILENAME) or die;
while (<FILE>){$TRASH .=$_;}
close (FILE);@MEINEPLATZHALTER=('NAME','STRASSE');
for (@MEINEPLATZHALTER){
$PLATZHALTER="<!--".$_."-->";
$TRASH=~ s/$PLATZHALTER/$DEINWERT/g;
}print "content-type:text/html\n\n";
print $TRASH;so das war ein Ansatz den Rest musst Du um was zulernen selbst heraus finden, oder einfach hier
im Forum die Suche benutzen denn dort steht alles was du brauchst drin!Tool-pi
Hi,
ja das hab‚ ich bisher auch immer gemacht, aber nun stehe ich vor folgendem Problem (s. Antwort unten)
Tobias
Hi Tobias,
[...]
konkret behandelt das Skript eine Datenbankabfrage. Das Ergebnis wird mittels "open..." in eine Datei output.html geschrieben. Zu guter letzt soll das entsprechende CGI noch die generierte HTML-Datei aufrufen.
»» Wie lässt sich das realisieren ?
Also, wenn du wirklich nur auf die Datei weiterleiten willst machst du das mit
print "Location: http://$ENV{'SERVER_NAME'}/pfad/results.html\n\n";
Gibt es evtl. ein Problem bei mehreren parallelen Abfragen ?
Das wird das Problem sein, ja... Wenn der Client etwas laenger braucht, um die Ergebnis-Datei aufzurufen, koennte bis dahin schon jemand anderes das Script aufgerufen haben, und somit auch andere Daten in die Datei geschrieben haben.
Eine Loesung dafuer waere es, mehrere Dateien zu schreiben, und diese nach 5 Minuten wieder zu loeschen.
Allerding sind wohl die Loesungen, die die anderen auch schon vorgeschlagen haben (das Script gibt die Daten direkt aus) wohl am besten.
bis denn,
bye,sebi