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 で、読み込む変数を LIST にします)。

于 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 に答える