1

好的,这次我实际上已经付出了一些努力来尝试实现这一目标:)

我有这个代码:

#! /usr/bin/perl

open(my $fin, '<', "./file1.bin") or die "Cannot open file1.bin: $!";
binmode($fin);
open(my $fout, '>>', "./file2.bin") or die "Cannot create file2.bin: $!";
binmode($fout);


seek($fin,0x760, SEEK_CUR);
read($fin, 0x400,)
print ("$fin, $fout);
close($fout);

我不知道你是否能看到我想要做什么,但我试图寻找偏移量 0x760,然后从偏移量 0x760 读取,然后从 file1.bin 读取一大块字节(0x400)并将该块字节打印到 file2。斌

所以我想这是我想要做的事情的流程:

open file1.bin for reading in binmode
open file2.bin for writing in binmode
seek to offset 0x760 in file1.bin
read a chunk of data (0x400) from file1.bin
write the chunk of data (0x400) to file2.bin

希望您了解我要完成的工作:),并且任何输入都具有教育意义:)

4

2 回答 2

1

您忘记启用警告(这会告诉您“SEEK_CUR”被解释为字符串,因为您尚未导入常量)。

阅读文档以供阅读;您需要为读取的数据提供一个变量。

还要阅读印刷品;它的语法是print FILEHANDLE LIST; (其中 FILEHANDLE 将是 $fout 并列出您读入的变量)。

于 2013-02-04T07:36:32.197 回答
1

您的代码中有一个错字:

print ("$fin, $fout);

应该替换为(在打开和绑定模式之后)

my $buffer = '';
sysseek $fin, 0x760, SEEK_SET;
sysread $fin, $buffer, 0x400;
syswrite $fout, $buffer;
close $fin;
close $fout;
于 2013-02-04T07:36:43.810 回答