- ベストアンサー
Perlのseek関数について学びましょう
- seek関数は、ファイルハンドルの位置を移動するための関数です。
- seek関数の引数は、ファイルハンドル、オフセット、基準位置の順です。
- オフセットは現在の位置からの相対位置を示し、基準位置はファイルポインタの起点となる位置を指定します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
No.1のarukamunです。 >seek LOCK,10,2 >というのは、 >基準位置2、つまりファイルの終わりから、 >10バイトのところに移動する >ということになりますよね? ファイルの終わりから+10バイトの所へ移動できません。また、前に戻る事もありません。 恐らくエラーになって0を返すと思います。 オフセット値はマイナス値も指定できますので、前に戻りたければ seek LOCK,-10,2 の様に指定します。
その他の回答 (1)
- arukamun
- ベストアンサー率35% (842/2394)
seek ファイルハンドル, オフセット, 基準位置 ここで基準位置なのですが、 0, 1, 2の3通りしかありません。 0:ファイルの先頭から 1:現在のファイルポインタから 2:ファイルの終わりから ですね。 オフセットはその基準の位置からどれだけずらすか、もしくはずれているかですね。 seek LOCK,0,2 ファイルポインタLOCKをファイルの終わりから0バイトの所に移動(変更)する。 seek LOCK,0,0 ファイルポインタLOCKをファイルの先頭から0バイトの所に移動(変更)する。 要するに、基準位置を基準にして、オフセット分移動した所を指すという事です。 お解り頂けましたでしょうか。
お礼
ありがとうございます。 となりますと、 seek LOCK,10,2 というのは、 基準位置2、つまりファイルの終わりから、 10バイトのところに移動する ということになりますよね? その場合、ファイルの終わりから前方向に戻るということでしょうか? 基準位置が0の場合は、後ろ方向、つまり右に進むということになるのでしょうか?
お礼
ありがとうございます。 なるほど、常に後方へしか移動しないということなんですね。 非常によくわかりました。 これでなんとかseek関数が使えそうです。 ご丁寧にありがとうございました。