|
|
|
Clear questions and runnable code get the best and fastest answer |
|
| PerlMonks |
How do I randomly update a binary file?by faq_monk (Initiate) |
| on Oct 13, 1999 at 03:42 UTC ( [id://807]=perlfaq nodetype: print w/replies, xml ) | Need Help?? |
|
Current Perl documentation can be found at perldoc.perl.org. Here is our local, out-dated (pre-5.6) version: If you're just trying to patch a binary, in many cases something as simple as this works:
perl -i -pe 's{window manager}{window mangler}g' /usr/bin/emacs
However, if you have fixed sized records, then you might do something more like this:
$RECSIZE = 220; # size of record, in bytes
$recno = 37; # which record to update
open(FH, "+<somewhere") || die "can't update somewhere: $!";
seek(FH, $recno * $RECSIZE, 0);
read(FH, $record, $RECSIZE) == $RECSIZE || die "can't read record $recno: $!";
# munge the record
seek(FH, $recno * $RECSIZE, 0);
print FH $record;
close FH;
Locking and error checking are left as an exercise for the reader. Don't forget them, or you'll be quite sorry.
|
|