2018-10-17T10:15:26
RaubtierDer Punkt ist doch, wenn du 160 Zeichen hast, dann können das auch mehr als 160 Bytes sein. Sobald die Zeichen in der Datei in einer variabel langen Kodierung wie UTF-8 oder UTF-16 gespeichert ist, kannst du eben nicht brutal 160 Bytes einlesen.
Es waren Umlaute im Beispielstring von Haselnuss992. Wir wissen nicht, wie das open-Kommando lautete, also ob da beispielsweise mit "<:utf8" geöffnet wurde. Wenn ich Buchstaben lese, würde ich nicht binär lesen.
Übrigens ist eine andere, meiner Meinung nach bessere Alternative, $/ zu setzen:
my @entries = do { local $/ = \160; <$FH> }
Wenn man eine Datei mit
open my $FH, "<:utf8", "file" or die $!; öffnet, liest es 160 Zeichen einer UTF-8 kodierten Datei. Also je nach Modus beim Dateiöffnen.
Sobald Du den Layer auf utf-8 schaltest, geht Deine Lösung übrigens in die Hose. Was eben daran liegt, daß Dateien keine Zeichen sondern Bytes speichern (ich wiederhole mich).
MfG