in reply to Re^2: Reading binary file is not accurate ?
in thread Reading binary file is not accurate ?

The first method I described--read the entire block, and then extract the header, records and trailer from it--would look something like this:

while( read DATA, $data, BLOCKLEN ) { ## Extract the header from the front of the block my $header = substr $data, 0, BLOCKHDR, ''; ## do stuff with $header for my $cdr ( 1 .. MAXRECORD ) { ## Extract each record in turn from $data my $record = substr $data, 0, CDRLEN, ''; ## do stuff with $record } my $trailer = $data; ## Anything left in $data should be your trai +ler. ## do something with it. }

The second method I described might be done something like this:

until( eof DATA ) { read DATA, my $header, BLOCKHDR or die; ## Do stuff with $header; for my $cdr ( 1 .. MAXRECORD ) { read DATA, my $record, CDRLEN or die; ## Do stuff with $record } read DATA, my $trailer, BLOCKTRL or die; ## Do stuff with $trailer }

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
RIP an inspiration; A true Folk's Guy

Replies are listed 'Best First'.
Re^4: Reading binary file is not accurate ?
by Anonymous Monk on May 04, 2010 at 02:42 UTC
    Hi..

    Thank you very much for your help and now my program working properly.

      You're welcome. Which method did you opt for? Method 1 or method 2? Neither is wrong and both have their merits.