Halihallo molily
$br =~ s/\r|\n/<br>/g;
Damit wird aber \r\n zu <br><br> ersetzt. (\r\n|\r|\n) würde Windows-, Mac- und Unix-Zeilenumbrüche ersetzen. Die Reihenfolge der Alternativen ist ebenso wichtig, (\r|\n|\r\n) würde zuviele <br> ausgeben.
\n ist System-/Implementationsabhängig! (\n kann \015, \012 oder gar \015\012 bedeuten)
Auf welchem System würde "\n" in der RegExp-Angabe bzw. in einem String vom Perl-Interpreter als \015 oder \015\012 interpretiert? Als was wird dann \r gedeutet...? Das interessiert mich.
\r meistens CR, ausser Mac => LF
\n bedeutet eigentlich "alles"
s. Orlandos Link.
Eine neue Zeile wird durch CR, LF oder CRLF eingeführt (oder besser beendet).
Das ist mir bekannt, aber bisher dachte ich, dass \n systemübergreifend \012 bedeutet... Ist die Zuordnung \r => \015 und \n => \012 nicht plattformübergreifend gleich, es handelt sich doch um den Perl-Interpreter, der den Alias in seinen Dezimalwert uminterpretiert?
Ja. Der Einfachheit halber ist \n bei Perl _immer_ das Zeilenende, was das dann bedeutet CRLF, CR oder LF ist eben OS/Impl. abhängig.
wenn man's genau nimmt. \r und \n sind _immer_ mit Vorsicht zu geniessen. Ich könnte mir jedoch vorstellen, dass deine Lösung auf allen Systemen/Impl. funktioniert, aber "exakt/treffend" ist es dennoch nicht :-)
Nun gut, in erster Linie entwickelt man für die bekannte Zielplattform, in zweiter Linie sollte ein Perlscript natürlich plattformübergreifend funktionieren.
Mit \r\n ("Windows-Format") und \n für Unix (Linux) bin ich bisher immer problemlos gefahren...
\r\n auf Win sollte doch eigentlich in CRCRLF umgewandelt werden, oder?
Naja, wie auch immer, mit \015\012|\015|\012 fährt man auf jeden Fall immer gut (ja, Mac-Systeme gibt's auch noch *g*) :-)
Viele Grüsse
Philipp
PS: Danke für den treffenden Link, Orlando.