Thread Erzeugen von Referenz von Array von Array (eine Frage noch!) (39 answers)
Opened by kimmy at 2011-09-28 15:57

topeg
 2011-09-29 15:42
#152765 #152765
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Das ist kein Bug von perl. Dein Problem ist dass du die Zeilen unter Windows mit "\x0D\x0A" (DOS, AmigaOS und TOS ist das auch so) enden. Unter uniodien Systemen wie MacOSX, Linux, oder Unix ist der Zeilentrenner "\x0A". Unter MacOS1-9 ist das Ende der Zeile mit "\x0D" markiert.

Nun steht in $/ ($INPUT_RECORD_SEPARATOR) die vom System verwendete Zeilenfolge, die einen Zeilenumbruch erzwingt. chomp entfernt die dort definierten Zeichen vom Zeilenende. Ein Windows-Zeilenende wird von Unix-Systemen erkannt, aber das chomp entfernt nur eines der beiden Zeichen (das "\x0D" bleibt erhalten) Eine scheinbar leere Zeile ist nicht leer. Sie enthält noch ein "\r". Das bedeutet, das perl bei einer Ausgabe nicht nörgelt.
Bei Berechnungen mit diesen Werten macht das keine Probleme, da perl den String in eine gültige Zahl umwandeln kann.

Die Meldungen kommen also weil deine Daten die vom Script erwarteten Format nicht erfüllt.

Mein Vorschlag wäre. Entferne alle Möglichen Zeilenenden $line=~s/[\x0D\x0A]+$//s und ignorieren leere Zeilen next unless($line);

View full thread Erzeugen von Referenz von Array von Array (eine Frage noch!)