网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

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

时间:2023-06-25 17:42

人气:

作者:admin

标签: Perl      必考  语言  正则 

导读:如果匹配成功,匹配的字符串自动保存在 $ 变量中,打印...

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
< , >, > >        代表读取、写入、追加
温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信