Rolf B: linefeed Überraschung

Beitrag lesen

Hallo beatovich,

das ist zwar mittlerweile eine akademische Diskussion, aber du hast wohl recht.

Das logische Linefeed in Perl ist \n, das findet man an diversen Stellen. Ein I/O Layer hätte also die Aufgabe, ein \n in den plattformspezifischen Line-Terminator zu übersetzen.

Was ich nicht gewusst habe, ist, dass Perl diese Aufgabe NUR im DOS/Windows Bereich dem I/O Layer überlässt (also diesem :crlf Dingsbums). Andere Perl-Portierungen deuten \n um. \n ist \x0a unter Unix und DOS sowie dessen Abkömmlingen (Windows+OS/2), aber es ist wird von Perl für MacOS als \x0d aufgefasst. Auf EBCDIC-Plattformen ist es \x15 oder \x25. Quelle

D.h. auf Plattformen mit \n != \x0a funktioniert der vorgeschlagene Replace nicht. Korrekt wäre wohl /(\x0d?\x0a)\|\x0d/ -> '\n', damit sollte man besser zurecht kommen. Immer vorausgesetzt, dass der Browser einen Datenstrom liefert, der auf einer ASCII-Codepage bzw. Unicode basiert. Liefert er EBCDIC, hast Du eh andere Probleme, und der Browser erst recht.

Rolf

--
sumpsi - posui - clusi