Moin!
Nochmal zur Klarstellung:
Wird in Perl innerhalb eines Scriptes in einer print-Anweisung ein logisches Newline verwendet, entscheidet Perl (m.W. während der Kompilierung des Scriptes) in Abhängigkeit von der Plattform und vom Kontext, wie es dieses Newline auszugeben hat, sodass in diesem Fall aus dem "\n\n" im Script "CRLF+CRLF" als Headerabschluss wird.
Ich glaube, du dichtest Perl da Fähigkeiten an, die es nicht hat.
Insbesondere kann das schlichte Perl-Skript nicht wissen, dass die ersten paar Zeilen seines Outputs als HTTP-Header zu verstehen sind, und die nachfolgenden als HTTP-Body - und nur beim Header CRLF verpflichtend ist, sonst aber nicht.
Im Gegenteil: Der Apache greift ein. Alle Perl-Skripte (außer die, deren Namen mit "nph-" beginnt - steht für "non-parsed header") liefern ihre Ausgabe an den Apachen, der diese Ausgabe puffert, "korrekt macht", noch weitere HTTP-Header einfügt etc., und den Inhalt am Ende dann an den Browser schickt.
Der Apache selbst empfängt also durchaus nur LF, aber da er gewohnt ist, bei den Linefeeds tolerant zu sein, erkennt er sie als Headertrennung an, ersetzt sie bei der Auslieferung aber HTTP-konform durch CRLF.
- Sven Rautenberg
"Love your nation - respect the others."