agapanthus: Die Lösung...

Beitrag lesen

Mahlzeit.

Mir fehlt nur im Moment leider die Zeit, das Modul genauer zu untersuchen. Mein Verdacht ist folgender: Im CGI.pm wird die Standard-Perl-Methode print ersetzt.

Nö, das isses nich. Aber: CGI.pm setzt STDOUT unter WINDOWS|DOS|OS2|MSWin|CYGWIN in den binmode:

$CGI::DefaultClass->binmode(main::STDOUT);

Damit ist \n nicht mehr 0x0d 0x0a sondern nur 0x0a. Und das scheint Tinyweb nicht zu genügen, der Indianer ist da toleranter, er kennt das ja von Linux... Eine kleine Änderung des Scripts bringt das gewünschte Ergebnis:

use CGI;
print "Content-Type: text/html;\r\n\r\n";
print "Hello, World!\n";

Damit wird der Header richtig beendet und Tinyweb ist zufrieden.

Warum es dann aber mit

print $query->header('text/html');

geht? Unter Windows wird in CGI.pm $CRLF = "\015\012"; gesetzt. Und diese Variable wird, nachdem die Methode header() den selbigen zusammengebaut hat, 2x an ihn angehangen:

my $header = join($CRLF,@header)."${CRLF}${CRLF}";

Das liefert dann "ordentliche" Zeilenenden...

Gruß Frank