我们在通过文件句柄读取文件内容的时候,一般都是顺序读取的。其实 Perl 中提供了改变读取位置的方法,就是 seek 函数。

seek 函数的使用方法是:


seek FILEHANDLE,POSITION,WHENCE

其中,position 代表偏移的字节数,whence 有三种选择,分别是
  • SEEK_SET, 也就是 0,代表文件开头
  • SEEK_CUR, 也就是 1,代表文件当前位置
  • SEEK_END, 也就是 2,代表文件结尾

下面是一个例子,其中读取位置被重新定义到了文件开头的12字节处。
  1. open (FILEHANDLE,") or die "cannot open file.txt";
  2. seek FILEHANDLE,12,0;
  3. while (<FILEHANDLE>){
  4. print;
  5. }
  6. close (FILEHANDLE);


tell 函数使用方法


tell [FILEHANDLE]

另外一个相关的函数是 tell 函数,它返回指定的文件句柄读指针的当前位置(以字节为单位)。如果省略了文件句柄FILEHANDLE ,然后返回范围内访问的最后一个文件的位置。

这里是一个例子:
  1. #!/usr/bin/perl -w
  2. #by www.yibai.com
  3. open( FILE, " ) || die "Enable to open test file";
  4. $char = getc( FILE );
  5. print "First Charctaer is $char\n";
  6. $char = getc( FILE );
  7. print "Second Charctaer is $char\n";
  8. # Now check the poistion of read poiter.
  9. $position = tell( FILE );
  10. print "Position with in file $position\n";
  11. close(FILE);

12-24 16:26