Thread \n am Ende entfernen
(15 answers)
Opened by chmod777 at 2011-11-13 15:28
Dass ist aber auch noch stark fehlerträchtig, wenn man nicht aufpasst.
chomp() entfernt das, was im Skalar $/ steht. Standardmäßig ist es der Zeilenumbruch des jeweiligen Systems (DOS / Unix) auf dem das Skript läuft. Wenn nun auf einem WinDOS eine "unix-formatierte" Datei verarbeitet wird (also Zeilenende mit \x0a), wird chomp() versuchen, ein \x0d\x0a zu entfernen (weil das in $/ steht), was nicht funktionieren wird, weil kein \x0d im Zeilenumbruch vorhanden ist. Umgekehrt gibt es auf Linux mit DOS-Dateien ähnliche Probleme... Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 #!/usr/bin/perl # vim: set ts=4 sw=4 et sta: use strict; use warnings; # DOS line my $line = "Hallo Welt.\x0d\x0a\x0d\x0a"; print "Start: ", $line; while ( $line =~ m/\n$/ ) { chomp $line; } print "Stop: ", $line; Code: (dl
)
1 $ perl linebreak.pl | xxd meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |