一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

必考的Perl語言正則匹配和文件讀寫

冬至子 ? 來源:FPGA探索者 ? 作者:FPGA探索者 ? 2023-06-25 17:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.讀取文件

** 讀取“xxx.log”文件,如果打不開,就直接結束 die**

文件操作時 < 表示讀取,> 表示寫入,>> 表示追加

如果讀取成功,則返回一個不為 0 的數(shù),作為判斷依據(jù)。

圖片

2.正則匹配

逐行讀取文件,并進行正則匹配

無注釋版:

圖片

有注釋版:

(1)使用 while(<文件句柄>) 對文件進行逐行讀取

(2)每一行的值會自動保存在一個** $_ **的特殊變量中

(3)獲取該行的值,并進行正則匹配

(4)如果匹配成功,匹配的字符串自動保存在 **$& **變量中,打印

圖片

3.關閉文件

關閉文件,直接 close 文件句柄;

圖片

4.結果

安裝 ActivePerl,并在命令行 cmd 中進入當前文件目錄,文件名命名是 test1.pl,在命令行中輸入 perl test1.pl,回車。

左側是 xxx.log 中的數(shù)據(jù),右側是結果。

首先打印一個 open 表示讀取文件成功;

然后讀取并打印每一行的字符串,當匹配成功時,打印 match:匹配到的字符串。

圖片

5.結果對比

這里使用 E課網(wǎng)的程序測試。

圖片

很遺憾,報錯:

圖片

這個可能是我的環(huán)境變量設置的原因,將

my %input_file = "xxx.log";

改成:

my $input_file = "xxx.log";

可以運行:

圖片

這里沒有支持中文,所以出現(xiàn)了亂碼,但是在第 3 和 第 4 行都打印了 fail 字符串,這是什么原因呢?

print "匹配的字符:$&\\n";

問題出現(xiàn)在 " **&** " 這個變量上,它保存的是上一次成功進行匹配的字符串,而且下一行的即使沒有匹配,也不影響"&" 內(nèi)的值,它不會更新,所以,只要有一次匹配到了"fail",按照上述寫法,后面就每一行都會打印匹配上了,這樣實際上是有問題的。

相關總結:

$_              默認輸入,在文件逐行讀取時,就是每次讀取的內(nèi)容
$& 或 $MATCH    上一次成功匹配的字符
=~              匹配
!~              不匹配
m/str//str/  正則表達式,看是否含有字符串 str
< , >, > >        代表讀取、寫入、追加
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4826

    瀏覽量

    86533
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    perl語言在IC設計中的應用

    工具進行數(shù)據(jù)處理。手工的方式是大家比較常用的,其劣勢不言而喻。編制工具一般會采用語言腳本(script),如:batch文件,sh/csh等等或者采用C語言PERL是一腳本
    發(fā)表于 01-11 15:06

    Perl語言在電路設計中的應用

    設計中,電路仿真是設計的關鍵。而一個完備而準確的測試文件,則是電路仿真的基礎。Perl語言在電路設計中的應用語言編寫的應用程序可自動生成設計者所需要的仿真測試
    發(fā)表于 01-11 15:19

    Labview中正則匹配的疑問

    問題一:大家都是如何解決正則匹配找到一個匹配馬上停止,不能全文匹配的問題.問題二:如圖
    發(fā)表于 01-28 20:00

    shell正則表達式學習

    程序設計語言都支持利用正則表達式進行字符串操作。例如,在Perl中就內(nèi)建了一個功能強大的正則表達式引擎。正則表達式在檢索或替換上遠比之前用到
    發(fā)表于 07-25 17:18

    怎么用Python來讀取文件后綴和文件名?

    Python 語言Perl,C 和 Java 等語言有許多相似之處,也有一定的差異性,以下是Python語言獲取文件后綴名
    發(fā)表于 01-02 16:35

    求助,匹配正則表達式使用問題

    求助,我在使用匹配正則表達匹配visi串口傳回的數(shù)據(jù)時候,一直無法匹配成功。我懷疑是我的正則表達式書寫有問題,但沒有找到問題,求助各位大神
    發(fā)表于 03-29 21:19

    正則表達式以及實用的匹配規(guī)則概述

    的字符串。正則表達式的搜索和匹配功能非常強大,以至于幾乎所有的腳本語言(比如Python, Perl,JavaScript),Java等高級編程語言
    發(fā)表于 09-16 14:23

    正則表達式匹配

    正則表達式是描述文本模式的表示法,它可以有效地構造一種用于模式匹配的專用語言。雖然正則表達式可以有多種不同的形式,但它們都有著共同的特點:模式中的大多數(shù)字符都
    發(fā)表于 10-29 13:21 ?0次下載

    Perl語言入門教程

    Perl語言入門教程 引言 Perl是一種非常簡單、應用廣泛且反響很好的腳本語言。它可用于各種任務(例如,您可以使用它創(chuàng)建DOS批處理文件
    發(fā)表于 07-30 14:08 ?3464次閱讀

    如何在C++?Builder6上使用Boost正則表達式庫的詳細資料概述

    正則表達式是一種模式匹配形式,它通常用在處理的文本程序中。比如我們經(jīng)常使用的grep工具,還是perl語言都使用了正則表達式。傳統(tǒng)的C++處
    發(fā)表于 10-18 18:44 ?1次下載

    Perl在ASIC中的應用—高級篇(1):正則表達式

    從今天開始,我們介紹 Perl 在 ASIC 應用中的高級篇。高級篇主要介紹正則表達式、module、package、面向對象、進程等。 正則表達式最常見的有兩個應用,高級查找和替換。而替換的核心
    的頭像 發(fā)表于 02-03 15:52 ?726次閱讀

    Perl語言入門(第四版)

    Perl語言入門(第四版)免費下載。
    發(fā)表于 05-12 10:54 ?0次下載

    搞芯片怎么能不懂perl語言呢?

    各位ICer在工作的過程當中,無論是前后端,都會使用各種常見的腳本語言如:shell,python,perl,tcl等等用于文件的處理,case測試,工具環(huán)境的調(diào)用和搭建,雖然隨著Python的發(fā)展以及
    的頭像 發(fā)表于 03-15 14:01 ?804次閱讀

    C語言怎樣向文件讀寫字符

    C語言用格式化的方式讀寫文件** 對文件進行格式化輸入輸出時,要用fprintf函數(shù)和fscanf函數(shù),作用與printf函數(shù)和scanf函數(shù)相仿,都是格式化
    的頭像 發(fā)表于 03-24 15:24 ?1186次閱讀

    搞芯片怎么能不懂perl語言呢?

    各位ICer在工作的過程當中,無論是前后端,都會使用各種常見的腳本語言如:shell,python,perl,tcl等等用于文件的處理,case測試,工具環(huán)境的調(diào)用和搭建
    的頭像 發(fā)表于 04-18 18:13 ?1458次閱讀