抓取不同文件中cell,并合并在一个文件中------perl实现

用来抓取不同transition和capcitance的rpt中的endpoint点,并唯一的输出在一个文件中。

use 5.010;
#use warnings;


#########traverse every file########
my @DIR_PATH = qw"/proj/hawk1/wa/hpiaopiao/Model_PCA_RTL_Freeze/hawk_pca_brg_macro/top_DRV/cap /proj/hawk1/wa/hpiaopiao/Model_PCA_RTL_Freeze/hawk_pca_brg_macro/top_DRV/tran";
#print $DIR_PATH[0],"\n";
#print $DIR_PATH[1],"\n"; for train

foreach $PATH (@DIR_PATH) {
  opendir DIR,$PATH or die "Can not open $PATH \n";
  @filelist = readdir DIR;
  my $pin;
  foreach $lfile (@filelist) {
    my $file = $PATH."/".$lfile;
    if ($file =~ /.*cap.*rpt/) {
      open DATA1, '<', $file;
      while(<DATA1>) {
        my $a = "c"; my $line1;
        if(/(.*Z hawk.*_\d* )/) {$line1 = $_; $pin = $1;}
        open DATA2, '<', './mergecap_mid1';
        while(<DATA2>) {if(/(.*Z hawk.*_\d* )/) { if($1 eq $pin) {$a = "a"; }}} close(DATA2);
        open DATA3, '>>', './mergecap_mid1';
        if( $a eq "c" ){ print DATA3 $line1;} close(DATA3);
      }
   } 
    if ($file =~ /.*tran.*rpt/) {
      open DATA4, '<', $file;
      while(<DATA4>) {
        my $a = "c"; my $line1;
        if(/(.*I hawk.*_\d* )/) {$line1 = $_; $pin = $1;}
        open DATA5, '<', './mergetran_mid1';
        while(<DATA5>) {if(/(.*I hawk.*_\d* )/) { if($1 eq $pin) {$a = "a"; }}} close(DATA5);
        open DATA6, '>>', './mergetran_mid1';
        if( $a eq "c" ){ print DATA6 $line1;} close(DATA6);
     }
    }
   }
}
      close(DATA1);
      close(DATA2);
      close(DATA3);
      close(DATA4);
      close(DATA5);
      close(DATA6);
      

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值