6

この問題は解決されました。どうもありがとうございました。
私の質問と私が使用している解決策を以下に示します。

質問:

open IN, "<./test.txt";
seek(IN,10,0);
read IN, $temp, 5;

seek(IN,20,0);
close(IN);


状況では、私のハンドルは位置 0 から始まり
ます。最初のシーク関数の後、ファイル ハンドルは位置 10になります。
読み取り後、私のハンドルは位置 15
になります。この時点で、再度シークします。次に、プログラムは先頭または位置 20 からシークします。
私の質問は、毎回ファイルの開始点から検索する必要がないように、ファイル内で検索を行う方法があるということです。


私が使用している方法:

use Fcntl qw(SEEK_SET SEEK_CUR SEEK_END); #SEEK_SET=0 SEEK_CUR=1 ...

$target_byte=30;
open IN, "<./test.txt";
seek(IN,10,SEEK_SET);
read IN, $temp, 5;

$position=tell(IN);
seek(IN,$target_byte-$position,SEEK_CUR);
#do what I want
close(IN);
4

1 に答える 1