Как я могу открыть двоичный файл в Perl, изменить ТОЛЬКО первый байт и записать его обратно?
-
20-09-2019 - |
Вопрос
Очень похоже на Изменение одного байта в файле на C, но в Perl вместо C.
Как я могу открыть двоичный файл в Perl, изменить ТОЛЬКО первый байт и записать его обратно?
Решение
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";
Другие советы
Много способов сделать это.Эффективный способ - открыть файл в режиме произвольного доступа с помощью 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;
Не связан с StackOverflow