關於perl中文件操作句柄使用的幾種方式-基礎版


在perl中存在幾種句柄使用的方式,其中open為最基礎的使用方法,下面把我遇到的幾種句柄的使用方法做一個小小的總結:

 

open方法的使用:

open方法是教程中最基礎的打開文件的句柄使用方法,較為常見

教程中給出的使用方式有三種使用方式

open FILEHANDLE,EXPR

open FILEHANDLE,MODE,LIST

open FILEHANDLE

我在這里只介紹簡單的使用方式,其它的可自行進行擴展學習。

open文件內容的讀取和寫入:

use strict;

#准備進行讀取的文件

my $my_file = "D:/file/file.txt";

#FILEHANDLE 為自命名句柄,大寫,<可省略

open (FILEHANDLE,"< $my_file") or die "Can't open $my_file";

#打印句柄讀取內容

print <FILEHANDLE>;

#需要寫入信息的文件,可以存在也可以不存在

my $print_file = "D:/file/file2.txt";

#一個>表示刪除原有文件寫入,兩個>表示追加寫入

open (FILEHANDLE2,"> $print_file") or die "Can't open $print_file";

#將讀取的數據寫入到需要寫入的文件中,當然這里要寫入的信息不一定是句柄,可以是任何內容,寫入文件的句柄是需要存在的。

print <FILEHANDLE2> <FILEHANDLE>;

close FILEHANDLE;#關閉讀取文件句柄

close FILEHANDLE2;#關閉寫入文件的句柄

 

IO::File模塊的使用:

IO::File模塊需要先創建新的文件句柄:然后open方法打開文件,它和open函數的工作方法類似:

use strict;

use IO::File;#導入IO模塊

#創建新的文件句柄,此處的文件句柄名需要根據自己的要求來命名,可以不是大寫字母

my $filehandle = new IO::File;

#用句柄打開文件file.txt,<表示文件為被讀取

$filehandle->open("< file.txt") or die "Can't open file.txt";

#打印讀取的文件內容

print <$filehandle>;

 #創建一個新的文件句柄

my $filehandle1 = new IO::File;

#該文件句柄打開需要寫入的文件

$filehandle1->open("> file1.txt") or diw "Can't open file1.txt";

#將hello word 信息打印入該文件句柄

$filehandle1->print ("hello word");

$filehandle->close;#將讀取文件的句柄關閉

$filehandle->close;#將寫入文件的句柄關閉

 

FileHandle模塊的使用:

FileHandle方法應該是在IO模塊中的方法中衍生出來的。

use strict;

use FileHandle;#導入FileHandle模塊

#創建讀取文件的句柄

my $filehandle = new FileHandle ("< file.txt") or die "Can't open file.txt";

#打印該文件內的內容

print <$filehandle>;

#創建寫入文件的文件句柄

my $filehandle1 = new FileHandle("> file1.txt") or die "Can't open file1.txt";

#將hello word信息寫入該句柄中

print <$filehandle1> "hello word";

close $filehandle;#關閉讀取文件的句柄

close $filehandle1;#關閉寫入文件的句柄

 

以上三種方法在開發的過程中都曾嘗試過,最為常用的為最后一種方法,使用FileHandle模塊方法,比較簡潔,對比第二種方法,將open和創建歸為一個步驟來進行解決。但是對於這三種方法各自在性能方面或者其它方面的優缺點暫時我還不能進行解答,只是將該三種創建句柄的方法歸納出來供大家進行參考和使用,在本總結中如果存在不正確的地方,也請大家給我留言進行修正,如果對該方面了解比較多的,也可以提出更對寶貴意見,僅以此來拋磚引玉。

 

在后面的章節中我會詳細對文件句柄進行更深入的探討,會對后兩個模塊進行更深入的研究和解析。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM