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...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;
my $line = "Hallo Welt.\x0d\x0a\x0d\x0a";
print "Start: ", $line;
while ( $line =~ m/\n$/ ) { chomp $line; }
print "Stop: ", $line;
$ perl linebreak.pl | xxd
0000000: 5374 6172 743a 2048 616c 6c6f 2057 656c Start: Hallo Wel
0000010: 742e 0d0a 0d0a 5374 6f70 3a20 4861 6c6c t.....Stop: Hall
0000020: 6f20 5765 6c74 2e0d 0a0d o Welt....
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!