Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
However, its not working exactly as I thought it would. Instead of $buffer being filled with a single byte value, it will actually be padded with null bytes of the size of the offset. For example: If I have the binary file:my $offset = 0; my $buffer; open (FILE, "file.binary"); binmode FILE; while ( read(FILE, $buffer, 1, $offset++) ) { ... Code here ... $buffer = ""; }
\aa\bb\cc\dd\ee
and I run the above code against it, I'll get the following values for $buffer:
$buffer = \aa
$buffer = \00\bb
$buffer = \00\00\cc
$buffer = \00\00\00\dd
etc.
What I really want is this:
$buffer = \aa
$buffer = \bb
$buffer = \cc
$buffer = \dd
and etc.
What makes this more bizarre, is if I undef $buffer every time, it will still add those padding null bytes. I've tried everything including undef, setting $buffer to "", reinitializing buffer (i.e. read(FILE, my $buffer, 1, $offset++)), but I can't seem to figure this out. Any suggestions?
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Reading binary file byte by byte
by ELISHEVA (Prior) on Dec 21, 2010 at 13:33 UTC | |
|
Re: Reading binary file byte by byte
by anonymized user 468275 (Curate) on Dec 21, 2010 at 16:43 UTC | |
by ikegami (Patriarch) on Dec 21, 2010 at 18:02 UTC | |
by anonymized user 468275 (Curate) on Dec 23, 2010 at 13:26 UTC | |
by ikegami (Patriarch) on Dec 23, 2010 at 16:03 UTC | |
by AnomalousMonk (Archbishop) on Dec 21, 2010 at 17:44 UTC |