knisterq: Probleme bei der Ausgabe eines Hier-Dokuments

Ich fang grade erts mit Perl/CGI an und hab noch einige grundlegende Probleme.
z.B. möchte ich ein Hier-Dokument auf meinem Browser(IE) ausgeben und es kommt nichts! auch keine Fehlermeldung. Ich hab einen lokalen server installiert, die Pfade stimmen, im error_log_file steht nichts...

print <<'HDOK';
Content-type: text/html
<html>
<head><title>test eines hier-dokuments</title></head>
<body>
<h1>das ist mein hier-dokument</h1>
</body>
</html>
HDOK

...was mch ich falsch?
Ähnliche Probleme hab ich mit einem script das mit side-by-side Frames arbeitet. Da bekomme ich wenigstens die Überschrift aber keinen Input und auch keine Frames.
Danke schon mal, knisterq!

  1. Hi

    Content-type: text/html

    danach muss eine Leerzeile kommen.

    Viele Grüße, Rolf

    1. Hi

      Content-type: text/html

      danach muss eine Leerzeile kommen.

      Viele Grüße, Rolf

      Danke Jungs, aber das ist es nicht! Ich bekomme ja keine Fehlermeldung - nur eine leere Seite angezeigt!
      ich glaube eher, daß irgendwas mit meinen server Einstellungen nicht stimmt. Vielleicht kann ja jemand was mit dem Protokollauszug anfangen! Ach ja, mein lokaler server ist omnihttp!

      127.0.0.1 knisterq - [23/May/2000:13:40:41 +0200] "GET /3.pl HTTP/1.1" 200 - "" "Mozilla/4.0 (compatible; MSIE 5.0; Windows 95; DigExt)"
      [Standard CGI Launch] WorkPath: C:\perl\proton CmdLine: "C:\PERL\BIN\PERL.EXE" "C:\perl\proton\3.pl" Args:  Path Info: /3.pl

      Danke, knisterq.

  2. Ich fang grade erts mit Perl/CGI an und hab noch einige grundlegende Probleme.
    z.B. möchte ich ein Hier-Dokument auf meinem Browser(IE) ausgeben und es kommt nichts! auch keine Fehlermeldung. Ich hab einen lokalen server installiert, die Pfade stimmen, im error_log_file steht nichts...

    print <<'HDOK';
    Content-type: text/html
    <html>
    <head><title>test eines hier-dokuments</title></head>
    <body>
    <h1>das ist mein hier-dokument</h1>
    </body>
    </html>
    HDOK

    ...was mch ich falsch?
    Ähnliche Probleme hab ich mit einem script das mit side-by-side Frames arbeitet. Da bekomme ich wenigstens die Überschrift aber keinen Input und auch keine Frames.
    Danke schon mal, knisterq!

    Hallo knisterq,

    das erste Problem liegt Darin, dass Du zwischen dem HTTP-Header (Zeile Content-type: text/html) und dem HTTP-Body
    die obligatorische LEERZEILE vergessen hast.
    Das zweite Problem sind deine Quotierungszeichen. Scheinbar verwendets Du Backticks (`). Das ist falsch, da das
    Perlskript den nachfolgenden Text als Systembefehl interpretiert. Du solltest doppelte Anführungszeichen verwenden ("), damit
    auch eine Variablenevaluierung im Hier-Dokument stattfindet.
    Normalerweise müsste der Server allerdings mit einer 500 Fehlermeldung antworten!

    Richtig lautet die Ausgabe also so:

    print <<"HDOK";
    Content-type: text/html

    <html>
    <head><title>test eines hier-dokuments</title></head>
    <body>
    <h1>das ist mein hier-dokument</h1>
    </body>
    </html>
    HDOK
    Gruss
    Stephan

    1. Hi,

      Das zweite Problem sind deine Quotierungszeichen. Scheinbar verwendets Du Backticks (`).

      nein, es sind Singlequotes. Backticks wären aber in der Tat falsch.

      Du solltest doppelte Anführungszeichen verwenden ("), damit auch eine Variablenevaluierung im Hier-Dokument stattfindet.

      Und genau wenn er das nicht möchte (oder braucht), sind Singlequotes die richtige Wahl :-)
      Doublequotes können übrigens auch weggelassen werden.

      Cheatah