Thomas Vesely: Perl Script soll nichts zurückliefern

Ich hatte mein Problem (Perl-Script soll explicit nichts zurückgeben, auch nicht die Meldung "... produced no output ..." )bereits dargelegt und freundlicherweise auch gleich eine Antwort bekommen. DANKE !!
Frank antwortete mir:
Damit keine leere Seite angezeigt wird, muss Dein Script einen HTTP-Header mit "Status: 204 No response\n\n" zurückgeben. Dann ist der Server zufrieden und der Browser weis, das er nichts ändern soll.

Ich bin zu doof und weis nicht ob und wie ich das in meinen Perl-Script Zeilen (die am Ende eine Rückgabe definieren) unterbringe.
print "Content-type: text/html\n\n";
print '<html>';
usw..

Für jede Antwort bin ich dankbar...
Ciao
Thomas

  1. hi,

    Damit keine leere Seite angezeigt wird, muss Dein Script einen HTTP-Header mit "Status: 204 No response\n\n" zurückgeben. Dann ist der Server zufrieden und der Browser weis, das er nichts ändern soll.

    use CGI;
    my $query = new CGI;
    print $query->header('text/html','204 No response');

    wolltest du dieses?

    ciao
    jens

    1. hi,

      Damit keine leere Seite angezeigt wird, muss Dein Script einen HTTP-Header mit "Status: 204 No response\n\n" zurückgeben. Dann ist der Server zufrieden und der Browser weis, das er nichts ändern soll.

      use CGI;
      my $query = new CGI;
      print $query->header('text/html','204 No response');

      wolltest du dieses?

      ciao
      jens

      nein nicht direkt:
      mein (simples) Problem liegt in der Rückgabe eines Perl-Scriptes, das den an dieses Script übergebenen Parameter $ENV{'QUERY_STRING'} in eine Textdatei loggt und sonst nichts machen soll (Einbahnstrasse ohne Rückgabe einer HTML-Seite).
      Laut Perl-CGI Lehre kommen am Ende des Scripts die "Print" Befehle für das Zusammenbasteln einer HTML-Seite die dann dargestellt werden soll. Jetzt will ich eben nur diesen HTTP-Header zusammenstellen so wie Frank das vorschlägt:

      Damit keine leere Seite angezeigt wird, muss Dein Script einen
      HTTP-Header mit "Status: 204 No response\n\n" zurückgeben

      und kenne die Syntax noch nicht gut genug.
      Sorry, ich kämpfe das erste Mal mit diesen Mechanismen, sodaß mir nicht klar ist, wie ich eben diesen (und nur diesen) Header zurückgebe.
      Helf mir am Besten mit genau diesem "Print" Statement aus Perl.
      Danke
      Ciao Thomas

      1. Hi Thomas!

        und kenne die Syntax noch nicht gut genug.

        Das kommt noch ...

        Sorry, ich kämpfe das erste Mal mit diesen Mechanismen, sodaß mir nicht klar ist,
        wie ich eben diesen (und nur diesen) Header zurückgebe.
        Helf mir am Besten mit genau diesem "Print" Statement aus Perl.

        Wie Cheatah in seinem Posting geschrieben hat: Du schreibst nichts weiter als
        print "Status: 204 No response\n\n";
        in Dein Script an die Stelle, an der Du Dein

        print "Content-type: text/html\n\n";
        print '<html>';
        usw..

        schreiben würdest.

        Eleganter ists mit Jens's Tipp:

        am Anfang des Scripts:

        use CGI;
        my $query = new CGI;

        dort, wo Du den Header ausgeben wills:

        print $query->header('text/html','204 No response');

        Wenn Du jedoch das Modul CGI nur nutzt, um den Header auszugeben, ist diese Lösung nicht sinnvoll.

        Gruß Frank

  2. Hi,

    Damit keine leere Seite angezeigt wird, muss Dein Script einen HTTP-Header mit "Status: 204 No response\n\n" zurückgeben. Dann ist der Server zufrieden und der Browser weis, das er nichts ändern soll.

    Ich bin zu doof und weis nicht ob und wie ich das in meinen Perl-Script Zeilen (die am Ende eine Rückgabe definieren) unterbringe.
    print "Content-type: text/html\n\n";

    der HTTP-Header ist die erste Ausgabe des Scripts bis hin zur ersten Leerzeile, also bis zum ersten doppelten Umbruch ("\n\n"). Dieser muß obigen Statuscode enthalten. Im Grunde also reicht es, die von mir zitierte Zeile durch die zu ersetzen, die Dir Frank genannt hat.

    Die Lösung von Jens ist ideal und entstammt übrigens der Dokumentation zum CGI-Modul, die ich Dir zeitgleich ans Herz legen möchte:

    perldoc CGI

    Cheatah