0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

必考的Perl语言正则匹配和文件读写

冬至子 来源:FPGA探索者 作者:FPGA探索者 2023-06-25 17:42 次阅读

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
    +关注

    关注

    55

    文章

    4774

    浏览量

    84385
收藏 人收藏

    评论

    相关推荐

    perl语言在IC设计中的应用

    工具进行数据处理。手工的方式是大家比较常用的,其劣势不言而喻。编制工具一般会采用语言脚本(script),如:batch文件,sh/csh等等或者采用C语言PERL是一脚本
    发表于 01-11 15:06

    Perl语言在电路设计中的应用

    设计中,电路仿真是设计的关键。而一个完备而准确的测试文件,则是电路仿真的基础。Perl语言在电路设计中的应用语言编写的应用程序可自动生成设计者所需要的仿真测试
    发表于 01-11 15:19

    Labview中正则匹配的疑问

    问题一:大家都是如何解决正则匹配找到一个匹配马上停止,不能全文匹配的问题.问题二:如图
    发表于 01-28 20:00

    shell正则表达式学习

    程序设计语言都支持利用正则表达式进行字符串操作。例如,在Perl中就内建了一个功能强大的正则表达式引擎。正则表达式在检索或替换上远比之前用到
    发表于 07-25 17:18

    怎么用Python来读取文件后缀和文件名?

    Python 语言Perl,C 和 Java 等语言有许多相似之处,也有一定的差异性,以下是Python语言获取文件后缀名
    发表于 01-02 16:35

    求助,匹配正则表达式使用问题

    求助,我在使用匹配正则表达匹配visi串口传回的数据时候,一直无法匹配成功。我怀疑是我的正则表达式书写有问题,但没有找到问题,求助各位大神
    发表于 03-29 21:19

    正则表达式以及实用的匹配规则概述

    的字符串。正则表达式的搜索和匹配功能非常强大,以至于几乎所有的脚本语言(比如Python, Perl,JavaScript),Java等高级编程语言
    发表于 09-16 14:23

    正则表达式匹配

    正则表达式是描述文本模式的表示法,它可以有效地构造一种用于模式匹配的专用语言。虽然正则表达式可以有多种不同的形式,但它们都有着共同的特点:模式中的大多数字符都
    发表于 10-29 13:21 0次下载

    Perl语言入门教程

    Perl语言入门教程 引言 Perl是一种非常简单、应用广泛且反响很好的脚本语言。它可用于各种任务(例如,您可以使用它创建DOS批处理文件
    发表于 07-30 14:08 3253次阅读

    如何在C++ Builder6上使用Boost正则表达式库的详细资料概述

    正则表达式是一种模式匹配形式,它通常用在处理的文本程序中。比如我们经常使用的grep工具,还是perl语言都使用了正则表达式。传统的C++处
    发表于 10-18 18:44 1次下载

    Perl在ASIC中的应用—高级篇(1):正则表达式

    从今天开始,我们介绍 Perl 在 ASIC 应用中的高级篇。高级篇主要介绍正则表达式、module、package、面向对象、进程等。 正则表达式最常见的有两个应用,高级查找和替换。而替换的核心
    的头像 发表于 02-03 15:52 518次阅读

    Perl语言入门(第四版)

    Perl语言入门(第四版)免费下载。
    发表于 05-12 10:54 0次下载

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

    各位ICer在工作的过程当中,无论是前后端,都会使用各种常见的脚本语言如:shell,python,perl,tcl等等用于文件的处理,case测试,工具环境的调用和搭建,虽然随着Python的发展以及
    的头像 发表于 03-15 14:01 566次阅读

    C语言怎样向文件读写字符

    C语言用格式化的方式读写文件** 对文件进行格式化输入输出时,要用fprintf函数和fscanf函数,作用与printf函数和scanf函数相仿,都是格式化
    的头像 发表于 03-24 15:24 845次阅读

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

    各位ICer在工作的过程当中,无论是前后端,都会使用各种常见的脚本语言如:shell,python,perl,tcl等等用于文件的处理,case测试,工具环境的调用和搭建
    的头像 发表于 04-18 18:13 1052次阅读