Hallo Struppi,
im Prinzip sieht es nun so aus:
$/= "\x5B\x50\x5B\xff";
$="";
print "Start: $CTIME_String\n";
open(EINDATEI, "<$Datei") || die "$Datei: $!";
open(AUSDATEI, ">$ausgDatei") || die "$ausgDatei: $!";
while (<EINDATEI>)
{
chomp $_;
$text = $_;
my $erstesZeichen = substr($text,0,1);
if ($erstesZeichen eq "\x02") {
print AUSDATEI "\x0A".substr($text,1 ) ;
} elsif ($erstesZeichen eq "\x03"){
print AUSDATEI "\x0D".substr($text,1 ) ;
} elsif ($erstesZeichen eq "\x04"){
print AUSDATEI "\x20".substr($text,1 ) ;
} elsif ($erstesZeichen eq "\x05"){
print AUSDATEI "\x19".substr($text,1 ) ;
} elsif ($erstesZeichen eq "\x01"){
print AUSDATEI "\x00".substr($text,1 ) ;
} else {
print AUSDATEI $text ;
}
}
und hat kein Problem mit Dateien > 1 GB. Sehr guter Tipp mit dem Zeilentrenner. Jetzt kommen noch die Tests, ob das Ergebnis stimmt.
Merci
Matthias