¿Cómo puedo abrir un archivo binario en Perl, cambiar sólo el primer byte, y escribir de nuevo a cabo?

StackOverflow https://stackoverflow.com/questions/2464334

  •  20-09-2019
  •  | 
  •  

Pregunta

Muy similar a Cambio de un byte en un archivo en C , pero en Perl en lugar de C.

¿Cómo puedo abrir un archivo binario en Perl, cambiar sólo el primer byte, y escribir de nuevo a cabo?

¿Fue útil?

Solución

open my $fh, '+<', $file      or die "open failed: $!\n";
my $byte;
sysread($fh, $byte, 1) == 1   or die "read failed: $!\n";
seek($fh, 0, 0);
syswrite($fh, $new_byte) == 1 or die "write failed: $!\n";
close $fh                     or die "close failed: $!\n"; 

Otros consejos

Muchas formas de hacerlo. Una forma eficiente es abrir el archivo en modo de acceso aleatorio con open $fh, '+<':

my $first_byte = chr(14);      # or whatever you want the first byte to be
open my $fh, '+<', $the_file;
seek $fh, 0, 0;                # optional - cursor is originally set to 0
print $fh $first_byte;         # could also use  write  or  syswrite  functions
close $fh;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top