8.12 バイナリファイルにランダムにアクセスする

大きなファイルの中間位置にあるバイナリレコードを読み込みたい。

  • 最初にレコードのサイズを取得する。それにレコード番号を乗じて、バイトアドレスを取得する。最後にseekでバイトアドレスに移動し、readでレコードを読み込む。
$ADDRESS = $RECSIZE * $RECNO;
seek(FH, $ADDRESS, 0) or die;
read(FH, $BUFFER, $RECSIZE);