之前使用perl 腳本寫了一個讀取文件的小工具,但是由於當時使用的Tie 的方式,在處理大文件時,效率並不十分理想,所以在網上搜索了perl 如何操作文件指針的文章,自己也學習一下,本博客就是學習過程中留下的記錄。
perl 打開文件的方式命令如下,"<"的含義為將test.txt文件的內容重定向到FILE 文件指針中
open FILE, "<", "/opt/test/test.txt";
perl 在操作文件指針時,可以用seek 函數移動文件指針
seek (filevar, distance, relative_to);
在文件中向前/后移動,有三個參數:
1、filevar,文件指針
2、distance,移動的字節數,正數向前移動,負數往回移動
3、reletive_to,值可為0、1或2。為0時,從文件頭開始移動,為1時,相對於當前位置(將要讀的下一行)移動,為2時,相對於文件末尾移動。
運行成功返回真(非零值),失敗則返回零,常與tell函數合用。
測試腳本如下,作用為打開/opt/test/test.txt,並且將文件指針偏移 0 個字節,然后讀取剩余的數據,讀取方式為按行讀取
#!/usr/bin/perl -w open FILE, "<", "/opt/test/test.txt"; my $position = tell(FILE); seek(FILE, $position, 0); while (<FILE>) { print ($_); } close (FILE);
perl 在操作文件指針時,還有一個按照字節讀取的函數--getc(FILEHANDLE) ,該函數將返回一個字節的內容,並且文件指針也移動一個字節
如果用戶想直接獲得文件的字節數,可以先偏移到文件末尾,再查看當前偏移位置來查看
open FILE, "<", "/opt/test/test.txt"; seek(FILE, 0, 2); my $position = tell(FILE);
參考博文:
http://blog.mcshell.org/2013/05/25/perl_seek_tell_to_tail_-f.html
http://www.yiibai.com/perl/perl_tell.html