一、打開、關閉文件
open的返回值用來確定打開文件的操作是否成功,當其成功時返回非零值,失敗時返回零,因此可以如下判斷:
if (open(MYFILE, "myfile"))
{
# here is what to do if the file opened successfully
}
當文件操作完畢后,用close(MYFILE); 關閉文件。
讀:open(文件句柄,"文件名") open(文件句柄,"文件名") 前提文件必須已經存在,否則會返回0,出錯信息在!中
寫:open(文件句柄,">文件名"),文件如果不存在,那么創建之,如果存在,內容被清空,長度截為0,!中有出錯信息。
追加:open(文件句柄,">>文件名"),基本同寫,但有一點,文件中的內容不會被清空,新的內容會追加到原文后面。
讀寫:open(文件句柄,"+文件名"),通過“+”模式,你可以既可以讀文件,又可以寫文件。你可以通過tell() 函數在文件內部移動,通過seek()函數進行定位。如果文件不存在,就會被創建。如果文件已經存在,原來的數據不會被清除。
二、讀文件
語句line = MYFILE>;從文件中讀取一行數據存儲到簡單變量line中并把文件指針向后移動一行。
語句@array = MYFILE>;把文件的全部內容讀入數組@array,文件的每一行(含回車符)為@array的一個元素。
主要使用以下三個函數:
1__VE_ITEM__Ø tell函數
函數tell用來確定文件中當前位置(亦即第一條記錄后的那個字節)。Tell返回的值也是記錄長度的字節數。
length = tell ( FILE );
如一條記錄有3個字節長度,字節0,1和2。因而,文件中的當前位置是3,這就是一條記錄的長度。
1__VE_ITEM__Ø seek函數
如果記錄的長度已知,函數seek可用于查找文件中的任何記錄。
函數seek接受3個參數:filename、offset和method。
Offset是在文件中確定新的當前位置時,所需移動的字節數。這個數一般可以這樣計算:所需跳過的記錄數乘以記錄的字節數。
Method指出要開始查找的位置:
0表示從文件開始處計算;
1表示從當前位置開始計算;
2表示從文件結束出開始計算(這種情況下,offset一般為負數)。
例如:
seek ( FILE, 5*length, 0 )
執行后,他會使用計算式5*length和method為0來跳過文件的前5條記錄,把第6條記錄作為文件的當前位置
1__VE_ITEM__Ø truncate函數
truncate函數接收兩個參數:一個文件句柄和一個文件字節位置。它從文件字節處開始移除記錄,直到文件結束。
Perl字符串處理函數
Perl字符串處理函數index
調用語法position=index(string,substring,position);
解說返回子串substring在字符串string中的位置,如果不存在則返回-1。參數position是可選項,表示匹配之前跳過的字符數,或者說從該位置開始匹配。
Perl字符串處理函數rindex
調用語法position=rindex(string,substring,position);
解說與index類似,區別是從右端匹配。
Perl字符串處理函數length
調用語法num=length(string);
解說返回字符串長度,或者說含有字符的數目。
Perl字符串處理函數pos
調用語法offset=pos(string);
解說返回最后一次模式匹配的位置。
Perl字符串處理函數substr
調用語法substr(expr,skipchars,length)
解說抽取字符串(或表達式生成的字符串)expr中的子串,跳過skipchars個字符,或者說從位置skipchars開始抽取子串(第一個字符位置為0),子串長度為length,此參數可忽略,意味著取剩下的全部字符。
當此函數出現在等式左邊時,expr必須為變量或數組元素,此時其中部分子串被等式右邊的值替換。
Perl字符串處理函數study
調用語法study(scalar);
解說用一種內部格式提高變量的訪問速度,同一時刻只對一個變量起作用。
Perl字符串處理函數lc
uc
調用語法retval=lc(string);
retval=uc(string);
解說將字符串全部轉換成小/大寫字母。
Perl字符串處理函數lcfirst
ucfirst
調用語法retval=lcfirst(string);
retval=ucfirst(string);
解說將第一個字母轉換成小/大寫。
Perl字符串處理函數quotameta
調用語法newstring=quotemeta(oldstring);
解說將非單詞的字母前面加上反斜線(\\)。
語句:string=quotemeta(string);
等效于:string=~s/(\\W)/\\\\1/g;
常用于模式匹配操作中,確保字符串中沒有字符被看作匹配操作符。
Perl字符串處理函數join
調用語法join(joinstr,list);
解說把字符串列表(數組)組合成一個長的字符串,在每兩個列表元素間插入串joinstr。
Perl字符串處理函數sprintf
調用語法sprintf(string,fields);
解說與printf類似,區別是結果不輸出到文件,而作為返回值賦給變量。
例子num=26;
outstr=sprintf("%d=%xhexadecimalor%ooctal\",num,num,num);
print(outstr);
結果輸出26=1ahexadecimalor32octal