
Jasmine
Administrator
Jan 26, 2001, 10:26 AM
Post #1 of 1
(1220 views)
|
|
How do I randomly update a binary file?
|
Can't Post
|
|
(From the Perl FAQ) How do I randomly update a binary file? 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.
|