好的,我实际上已经花了一些精力来完成这个任务,这一次:)
我有这样的代码:
#! /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.bin
所以我猜这就是我要做的事情的流程:
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希望您理解我正在尝试实现的目标:),任何输入都将是有教育意义的:)
发布于 2013-02-04 15:36:44
您的代码中有一个拼写错误:
print ("$fin, $fout);应替换为(在opening和bindmode之后)
my $buffer = '';
sysseek $fin, 0x760, SEEK_SET;
sysread $fin, $buffer, 0x400;
syswrite $fout, $buffer;
close $fin;
close $fout;发布于 2013-02-04 15:36:32
您忘记启用警告(这会告诉您"SEEK_CUR“被解释为字符串,因为您没有导入常量)。
阅读Read文档;您需要提供一个变量,以便读取数据。
它的语法是print FILEHANDLE LIST;(其中FILEHANDLE应该是$fout,并列出您读入的变量)。
https://stackoverflow.com/questions/14681963
复制相似问题