【perl】老司机的再一次翻车:没有想到加了一句打印,会影响结果输出

简介: 【perl】老司机的再一次翻车:没有想到加了一句打印,会影响结果输出

前言

自诩为多年perl海浮沉的老司机,竟然因为加了一句打印而翻车,这真是万万没有想到,记录一下引以为戒。

事情的由来

在脚本的读取文件里有很多字符串进行处理的时候,定位就会变得困难,比如说我只想打印A的沿路信息,但是直接加打印就会把ABCDE的一大堆信息全打印出来,筛选起来非常的难受。

因此我想到了之前搭环境时候做的一个操作,做一个debug函数在数据流里筛选,符合我需求的(比如说带有ecc error的transaction)报文才会触发debug打印,这种操作在脚本里完全可以照搬一下嘛!

额外感叹一下,最近越来越感觉到我做脚本的思路继承了各种之前搭环境的思路,估计没有几个人写perl的时候还要设置打印等级和最大error数量吧🆒

回归原题,因此我就做了一个简单的筛选机制,简化下的意思就是这样:

my $debug_name = “AA”;
warn “xxxxx” if $name =~ /$debug_name/;
• 1
• 2
• 3

也很好理解嘛,某一个变量包含我需要的信息,那就打印一些debug信息给我,如果不包含就pass,写完后我就觉得简直天衣无缝。

翻车事故

我一直这么开心的用着,直到一次我发现,某一处我加了打印后,竟然输出结果跟不加打印完全不一样?!当时我都疯了,倒是见过加一句$display把随机搞乱的情况,脚本里我还真的没见过加打印能影响输出的。

因此仔细的看了下上下文,终于发现了端倪,因为我的代码结构是这样子的:

if($name =~ /…/){
    warn “…” if $name =~ /$debug_name/;
    my $pre = $`;
    my $post = $’;
    my $body = $&;
}
• 1
• 2
• 3
• 4
• 5
• 6
• 7

问题就出现在下面的取匹配信息上了,本来我要取的是首行if里的匹配结果,结果这样一搞,我取到的是warn行后面的匹配结果,再加上我这里没有使用$1 $2编译没能报错,导致整个匹配处理彻底乱了也没被发现,最终的输出自然各种奇怪的东西。

问题解决

我把打印删了,改用eq ne,嘿高精度打印不搞模糊打印了~~~


目录
打赏
0
0
0
0
2
分享
相关文章
涨见识了,在终端执行 Python 代码的 6 种方式!
涨见识了,在终端执行 Python 代码的 6 种方式!
64 0
|
10月前
|
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
为何程序员在编写程序时难以一次性将所有代码完美无瑕地完成,而是需要经历反复修改Bug的过程?
92 7
关于“Python进高考”,我有句呵呵不知当讲不当讲
如果你是需要用编程来解决问题,那么用 Python 做便是了。用它是因为它适合,跟它火不火无关。
【高效编码】查询日志的命令老是记不住?没关系,这篇文章帮你记
您好,我是码农飞哥,一直想飞暂时在跑个那个老哥。
274 0
【高效编码】查询日志的命令老是记不住?没关系,这篇文章帮你记
来自实践中的教训,有时候纯ffmpeg命令并不好使,还得需要ffmpy包装器
您好,我是码农飞哥,感谢您阅读本文,欢迎一键三连哦。 本文是ffmpeg使用的第二篇文章,主要是关于ffmpy的使用。 干货满满,建议收藏,需要用到时常看看。 小伙伴们如有问题及需要,欢迎踊跃留言哦~ ~ ~。
287 0
又烧脑又炫技还没什么用,在代码里面打印自身
又烧脑又炫技还没什么用,在代码里面打印自身
231 0
又烧脑又炫技还没什么用,在代码里面打印自身
​既是爸爸又是爷爷?Python 多继承中的一个诡异现象
​既是爸爸又是爷爷?Python 多继承中的一个诡异现象
187 0
​既是爸爸又是爷爷?Python 多继承中的一个诡异现象
Python仅用3行代码就能输出花式字符串图集,同事直呼666!
相信Java程序员看到上面的图,一定不会陌生。没错,springboot的启动日志。不知道其他人怎么想,我第一次看到这个启动日志的时候,就觉得好炫酷。然而,大家在日常的Python开发中,日志打印的却枯燥无比。今天就来教大家打印出让同事羡慕,却让领导崩溃的代码输出。
629 0
初学Python常见异常错误,总有一处你会遇到!
初学Python常见错误 忘记写冒号 误用= 错误 缩紧 变量没有定义 中英文输入法导致的错误 不同数据类型的拼接 索引位置问题 使用字典中不存在的键 忘了括号 漏传参数 缺失依赖库 使用了python中对关键词 编码问题 1.
1626 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等