Thread new lines werden nicht erkannt: new lines von windows unter os x (19 answers)
Opened by Gast at 2006-01-12 00:41

Dubu
 2006-01-12 13:27
#61714 #61714
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Das klappt so nicht unter DOS/Windows, da beim Einlesen aus einer Textdatei bereits "\x0d\x0a" in "\x0a" bzw. "\n" umgewandelt wird.

Deshalb muss vor der Schleife noch binmode eingefuegt werden:
Code: (dl )
1
2
binmode STDIN or die $!;
binmode STDOUT or die $!;

Am besten auch while (<>) durch while (<STDIN>) ersetzen, damit wirklich nur von STDIN gelesen wird.
Dann muss man noch mit Ein- und Ausgabeumleitung arbeiten und es funktioniert von der Kommandozeile:
Code: (dl )
C:\> perl dos2unix.pl < dostext.txt > unixtext.txt


Die Eingabeumleitung ist dabei auch wichtig, denn falls die Daten nicht von STDIN kommen, sondern der Diamantoperator <> "magisch" Dateien aus @ARGV einliest und oeffnet, dann heisst das Filehandle nicht STDIN sondern ARGV und das binmode STDIN wirkt nicht:
Code: (dl )
C:\> perl dos2unix.pl dostext.txt > unixtext.txt   # klappt nicht!

Es liegt zwar nahe, statt binmode STDIN ein binmode ARGV zu versuchen, aber vor der Schleife ist das ARGV-Filehandle noch gar nicht geoeffnet und in der Schleife ist es zu spaet - die erste "Zeile" (tatsaechlich die ganze Datei) ist dann schon eingelesen. Da muesste man also ohne Magie arbeiten und die Dateien "von Hand" oeffnen.

View full thread new lines werden nicht erkannt: new lines von windows unter os x