使用Regex處理檔案
1. s///,s/abc/fred/ 先匹配abc,如果匹配上,使用fred替換abc;如果沒有匹配上,則什麼都不做
2. s///g,全域替換,s/abc/fred/g,將所有abc都替換成fred
3. 可以使用其他符號替代/作為分隔字元
4. /six同樣適用
5. $_ = “I saw Barney with Fred.”;
$_ = s/(fred|barney)//U$1/gi; # 現在是 “I saw BARNEY with FRED.”
/U後面的全部大寫,同理,/L後面的全部小寫,要終止效果,使用/E
6. /l和/u只針對後面的一個字元
7. /u/L 連用,表示第一個字母大寫,其他小寫
8. 以上修飾符也可以在print語句的""中使用
9. split不能分割用,逗號隔開的資料...0.0
10. split將模式與字串比較,將由 分離符所分隔開的子串作為列表返回回來.比如,@fields = split/:/,"abc:def:g:hij";
11. 如果兩個分隔字元連續出現,則會返回空元素,但結尾的空元素被丟棄
12. 預設時,split 對 $_操作,模式為空白.my @fields = split; #相當於 split//s+/,$_;但是也有區別,就是會將開頭的空元素丟棄
13. join函數,my $x = join “:”, "4, 6, 8, 10, 12"; #$x 為 4:6:8:10:12
14. 如果第二個參數只有一個或沒有元素,則只返回一個或空
15. 切記join第一個參數為字串,而不是模式
16. 在列表上下文中,匹配運算式返回的也是列表
my $text = "I love you!I love my city!";
my @result = ($text =~ /[a-z]+/gi);
print "@result/n"; #輸出: I love you I love my city
17. 如果不止一個括弧,則每次返回不只一個字串.例如把字串放到hash中:
my $data = "Barney Rubble Fred Flintstone Wilma Flintstone";
my %last_name = ($data =~ /(/w+)/S+(/w)/g );
每當模式比對成功,則返回一對值,成為hash的key/value
18. 非貪婪數量詞...前面講到的+,*,?,{}都是貪婪數量詞,就是先吃再吐(回退).非貪婪的,就是先匹配再吃.具體效率其實與資料相關.
19. +?,*?,{}?,?? 就是全部非貪婪數量詞
20. /m修飾符,用於處理多行字串(有多個分行符號)
21. $^I 此標量的值,可以決定while(<>)備份檔案的類型,比如 $^I = ".bak";或者$^I="~";
22. 在開括弧(後面加上?:,表示這個括弧只分組,不引起記憶體變數的分配