Perl學習筆記-2

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        一個非白空間字符

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章