Rolf B: linefeed Überraschung

Beitrag lesen

Hallo pl,

Es ist ein Windows Problem. Und es wurde hier vor ungefähr 10 Jahren mal durchgenommen.

Da war ich hier noch nicht aktiv :) Aber das \r kommt vom :crlf Layer hinein. Der ist hier im Spiel, denn das von beat anfangs gezeigte open(my $fh, ">", $thisfile ) verwendet per Default auf X-Betriebssystemen den :raw Layer und unter Windows den :crlf Layer. DAS ist Fakt.

Eine Zeile wird in Perl durch \n terminiert, Auch falsch. Es gibt eine Voreinstellung für chomp()

Wie gesagt - ich habe von Perl keine Ahnung und habe das möglicherweise zu universell formuliert. Aber chomp und IO auf Textdateien - das sind wohl zwei verschiedene Dinge. Ja gut, nicht GANZ verschieden, chomp benutzt man da zum Absägen der Zeilenendezeichen, aber es sind zwei verschiedene Aktivitäten.

Der Punkt ist doch: der :crlf Layer geht davon aus, dass eine Zeile durch \n terminiert ist. Bei dem von HTML gelieferten String ist das nicht der Fall. Wenn ich ein Script haben will, das an dieser Stelle keine Plattformabhängigkeit hat, dann muss ich wohl in Perl die \r entfernen und dann von Perl den Default-Layer auswählen lassen. Andernfalls habe ich den falschen Dateiinhalt, wenn ich mich vom Windows-Spielplatz zu den professionellen Junx bewege. Gelle?

Alles natürlich nur unter der Voraussetzung, dass die Datei für die Webanwendung mehr ist als ein Blob.

Rolf

--
sumpsi - posui - clusi