sysreadの使い方

[上に] [前に] [次に]
える 2000/01/17(月) 17:02:34
perl for win32で バイナリファイルの指定番地を読みたいのですが、

$file='hobe.bin';
$offset='FF';
open(BIN,"+<$file");
binmode(BIN);
$offset=hex($offset);
#sysread(BIN,$data,2,$offset);
seek(BIN,$offset,0);
read(BIN,$data,2);
$data=unpack("H2",$data);
print $data;

のようにすると、うまくいきますが、sysreadの方を使うとうまくいきません。同じようにsyswriteを使ったときもエラーがでます。
どうすればいいのでしょうか

きたむら 2000/01/17(月) 18:18:00
sysreadのオフセット引数は、ファイルの読み込み位置の指定ではなくて、$dataへの代入位置の指定です。
いまマニュアルを見ただけで、実行確認はしてません(^^;

ラウォッチ 2000/01/17(月) 18:20:12
sysreadで検索してみてください!
確か前に同じ質問が...。

える 2000/01/19(水) 00:42:12
>きたむら さん
>sysreadのオフセット引数は、ファイルの読み込み位置の指定ではな
>くて、$dataへの代入位置の指定です。
 そうだったんですか。どうもありがとうございました。これでなんとかなりそうです。

>いまマニュアルを見ただけで、実行確認はしてません
 マニュアルとは、どのようなものでしょうか? 付属の英文マニュアルならあきらめますが、日本語で手にはいるようなマニュアルがあれば、教えて頂けないでしょうか? (sysreadの詳しい解説が載っているような、詳しいマニュアル)

>ラウォッチ さん
>sysreadで検索してみてください!
 検索はしてみたのですが、$offsetの回答はありませんでした。

きたむら 2000/01/19(水) 13:44:47
>マニュアルとは、どのようなものでしょうか?
昨日の書き込みのとき見たのは、FreeBSDのオンラインマニュアルでした。
perlの関数の書式なら、"man perlfunc"(英語)か、"jman perlfunc"(和訳)で、たいてい間に合います。
最近ますます軟弱になって、ほとんどjmanしか見ないです。
"perldoc -f sysread"でもsysreadの説明は出ますけど、これは英語だけなので敬遠ぎみ。

える 2000/01/21(金) 01:38:12
[[解決]]
 回答ありがとうございました。しかし、私はWinなのでmanは使えません。ほかのスレッドで教えてもらったリンクを活用して行きたいと思います。

[上に] [前に] [次に]