微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > perl求助

perl求助

时间:10-02 整理:3721RD 点击:
写了一个perl脚本,用来删physical netlist中不要的filler的,主要有个匹配出问题了,如下open FILE,<FILE.txt;
select FILE;
$file=join '',<FILE>;
$file=~<.*?$fill.*?\n><>gm;#$fill是要删的FILLXX
open FILE,>FILE.txt;
print $file;
这个运行的都没问题,我删的是带FILLXX名字的那一行,但是最后发现网表里面多删了一行,很奇怪,多删的那一行附近代码为
//fill xxxx.
FILLXX ...;
FILLXX ...;
第一行是个注释,然后最后带了一个“.”点,然后脚本运行完,吧这一行注释也给删了,如果网表里面没这个点,脚本运行完,注释又不删,很是奇怪。

大概是因为你的xxxx匹配到$fill,然后如果后面碰巧没有字符就不匹配而已,所以这样是不可靠的

那不可能说我去了“.”这个句号就又不能匹配了啊?这个最奇怪

最好用while循环做,比较清晰
while (<>) {
if(/filler/i) {
next ;
}
print ;
}

再加个while就while嵌套一个while,我怕循环太多次,影响速度

不可能的,perl比你想象的要快,除非你感觉真的太慢了, 需要写法改进

标题


是很奇怪,你这个匹配是只要有$fill就匹配上,但是你放上来的script都有好几个错,难保你真正写的没问题
按你的写法应该改成这样:
$file=~s<^\s*?$fill.*?\n><>gm
至于原因,找不到就算了,要不你原封不动地把script和netlist那几行放上来。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top