1.讀取文件
** 讀取“xxx.log”文件,如果打不開,就直接結束 die**
文件操作時 < 表示讀取,> 表示寫入,>> 表示追加
如果讀取成功,則返回一個不為 0 的數,作為判斷依據。
2.正則匹配
逐行讀取文件,并進行正則匹配
無注釋版:
有注釋版:
(1)使用 while(<文件句柄>) 對文件進行逐行讀取
(2)每一行的值會自動保存在一個** $_ **的特殊變量中
(3)獲取該行的值,并進行正則匹配
(4)如果匹配成功,匹配的字符串自動保存在 **$& **變量中,打印
3.關閉文件
關閉文件,直接 close 文件句柄;
4.結果
安裝 ActivePerl,并在命令行 cmd 中進入當前文件目錄,文件名命名是 test1.pl,在命令行中輸入 perl test1.pl,回車。
左側是 xxx.log 中的數據,右側是結果。
首先打印一個 open 表示讀取文件成功;
然后讀取并打印每一行的字符串,當匹配成功時,打印 match:匹配到的字符串。
5.結果對比
這里使用 E課網的程序測試。
很遺憾,報錯:
這個可能是我的環境變量設置的原因,將
my %input_file = "xxx.log";
改成:
my $input_file = "xxx.log";
可以運行:
這里沒有支持中文,所以出現了亂碼,但是在第 3 和 第 4 行都打印了 fail 字符串,這是什么原因呢?
print "匹配的字符:$&\\n";
問題出現在 " **&** " 這個變量上,它保存的是上一次成功進行匹配的字符串,而且下一行的即使沒有匹配,也不影響"&" 內的值,它不會更新,所以,只要有一次匹配到了"fail",按照上述寫法,后面就每一行都會打印匹配上了,這樣實際上是有問題的。
相關總結:
$_ 默認輸入,在文件逐行讀取時,就是每次讀取的內容
$& 或 $MATCH 上一次成功匹配的字符
=~ 匹配
!~ 不匹配
m/str/ 或/str/ 正則表達式,看是否含有字符串 str
< , >, > > 代表讀取、寫入、追加
-
python
+關注
關注
56文章
4807瀏覽量
84971
發布評論請先 登錄
相關推薦
評論