Perl學習筆記<2>
|*********************************|
|************* 文件 **************|
|*********************************|
用open打開文件時,同時記得關閉句柄,否則會報以下警告:
Name "main::MYFILE" used only once:
例如:
open(MYFILE,"C://test.txt") || die("Can/'t open file:$!"); //此處有個疑問,期待高手幫忙解決:打開當前目錄,也需要輸入完
整路徑,否則也報警告;
close MYFILE;
die中的$!將更詳細的提示出錯的信息,建議使用;
聲明變量時,最好加上my,大部分的時候會報以下錯誤(警告):
Global symbol "$a" requires explicit package name at .... //$a爲你所使用的變量名;
open(MYFILE,"C://test.txt") || die("Can/'t open file:$!");
open(MYFILE,“>C://test.txt") or die("Can/'t open file:$!"); //寫入文件;
open(MYFILE,“>>C://test.txt") or die("Can/'t open file:$!"); //追加到文件尾;
print MYFILE "hello"; //將hello寫入到對應的句柄中;
部分文件測試運算符
運算符 舉 例 結果
- r - r‘file’ 如果可以讀取‘f i l e’,則返回真
- w -w $a 如果$ a中包含的文件名是可以寫入的文件名,則返回真
- e - e‘myfile’ 如果‘myfile’存在,則返回真
- z - z‘data’ 如果‘d a t a’存在,但是它是空的,則返回真
- s - s‘data’ 如果‘d a t a’存在,則返回‘d a t a’的大小,以字節爲計量單位
- f - f‘novel.txt’ 如果‘n o v e l . t x t’是個普通文件,則返回真
- d - d‘/tmp’ 如果‘/ t m p’是個目錄,則返回真
- T - T‘unknown’ 如果‘u n k n o w n’顯示爲一個文本文件,則返回真
- B - B‘unknown’ 如果‘u n k n o w n’顯示爲一個二進制文件,則返回真
- M - M‘foo’ 返回程序啓動運行以來‘f o o’文件被修改後經過的時間(以天數計算)
#--測試機哦未通過
對以上運算符程序舉例如下:
=head;
print "Save data to what file?";
my $myfile = <STDIN>;
chomp $myfile;
if( -s $myfile ){
warn "$myfile contents will be overwritten!/n";
warn "$myfile was last updated";
-M $myfile."das ago./n";
}
=cut;
|**************************************|
|************* 模式匹配 **************|
|**************************************|
1> .號(點)
匹配除了換行符之外的任何一個字符。
/x.y/ 可以匹配的字符:xzy, bxcy,x_y,x&y等,但是不匹配 xzzy,bxzzy,x_&y等字符;
2> +號(加號)
使前面的字符與後面的字符至少匹配一次,也可以任意地進行匹配。例如:
/do+g/將能夠與下面的字符串匹配:hounddog,hotdog,doogiehowser,doooooogdoog;
但是不能與下面的字符串匹配:badge(因爲沒有o),doofus(因爲沒有g),Doogie(因爲D與d不同),pagoda(因爲d、o和g的順
序不對);
3> *號(星號)
使前面的字符匹配0次或者任意次。例如:
/car*t/將能夠與下面的字符匹配:carted,cat,carrrt;
但是不能與下面的字符匹配:carrot(多了一個字符o),carl(模式中的t不是可有可無的),caart(多出來的a不能匹配);
4> ?號(問號)
元字符?與*之間的區別是:模式/c?ola/可以匹配cola和ola,但是不能與ccola匹配。多出來的c需要進行兩次匹配。模式/c*ola/可以
匹配cola、ola和ccola,因爲c可以根據需要重複匹配任意次,而不只是0次或一次。
5> pat{n,m}
/x{5,10}/ x至少出現5次,但是不超過1 0次。
/x{9,} / x至少出現9次,也可能出現更多次。
/x{0,4}/ x最多出現4次,也可能根本不出現。
/x{8} / x必須正好出現8次,不能多,也不能少
6> 字符匹配
[abcde] 用於匹配a、b、c、d或e中的任何
[a-e] 與上面相同。用於匹配a、b、c、
G 用於匹配大寫字母G或小寫字母g
[0-9] 用於匹配一個數字
[0-9]+ 用於順序匹配一個或多個數字
[A-Za-z]{5} 用於匹配任何一組5個字母字符
[*!@#$%&()] 用於匹配這些符號中的任何一個
7> ^號(暫稱爲異或符號)
如果插入記號(^)作爲字符類中的第一個字符,該字符類將變爲無效。
8> 常用字符類的快捷方式
/w 一個單詞字符,與[a-zA-z0-9_]相同
/W 一個非單詞字符(與/w相反)
/d 一個數字,與[0-9]相同
/D 一個非數字
/s 一個白空間字符,與[/t/f/r/n]相同
/S 一個非白空間字符