PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [PERL] Probleme bei der Verarbeitung von Binärdaten



exe
02-01-2007, 17:54
Hallo Forum,

ihr habt mir schon öfter geholfen. Vielleicht hab ihr ja diesmal auch wieder einen Tipp für mich. :D

Ich lese eine Binärdatei ein und suche dann darin nach Markierungen. Innerhalb dieser Markierungen suche ich dann wieder Daten. Mein Problem ist, dass Perl (zumindest in meinem Programm) nicht alle Abschnitte durchsucht. Hier mal ein Code-Schnipsel:


#!/usr/bin/perl
$input_file="/pfad/zur/binärdatei";
$/ = "RS\0\0";
$i=0;

open(DATAFILE,$input_file);
binmode(DATAFILE);
seek(DATAFILE, 0, 0);

while (<DATAFILE>) {
$data = <DATAFILE>;
$i++;
}

print $i;

Als Trennzeichen enthält die Datei die Zeichenfolge "RS" gefolgt von zwei binären Nullen.

Jetzt sollte der doch die Datei einlesen und an diese Zeichenfolge immer aufhören. Leider klaptt das so nicht. Das obere Skript gibt als Zähler 80 aus, in der Datei sind aber einige hundert "RS00"-Zeichenketten. Es ist nicht möglich die gesamte Datei einzulesen weil der Binärdatencontianer sehr groß werden kann. Ich hätte den Teil zwischen zwei "RS00" gerne in einer Variablen um die Daten dann weiter zu verarbeiten.

Vielleicht hat ja einer von euch eine Idee wie man das hinbekommt.

reneeb
03-01-2007, 13:47
ungetestet:
#!/usr/bin/perl

use strict;
use warnings;

my $input_file="/pfad/zur/binärdatei";
my $content = do{local $/; $_ = $input_file; <>};
my @parts = split "RS\0\0",$content;
print scalar @parts;