免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
论坛 程序设计 Perl 循环
最近访问板块 发新帖
查看: 1952 | 回复: 2
打印 上一主题 下一主题

循环 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-27 13:41 |只看该作者 |倒序浏览
半我看看下面一段代码.为什么打印printf "%d\n", $isprint_head;
会答应很多0,不是4个"o",
$TSE_socket_data_collect= "TSE__ntc_socket_data_collect".$time."\.csv";
#printf "%s",$TSE_socket_data_collect;
$customer_summary="customer_summary.txt";
$dut_control_min_qty="dut_control_min_qty.txt";
$tmpfile="tmp.csv";
##############################
#Map data summary  information to hash
##############################
open(FN,"<$customer_summary");
while(<FN>)
{
      #if(/^\s+$/)
      if($_ eq "")
    {
              next;
            }
      if(/customer_summary.txt/i)
      {
               next;
       }       

           chomp;
           $dut_yield_summary=$_;
          #printf "%s\n",$dut_yield_summary;
         # printf "%s",$_;
          mapNanyadutdata($bins,$dut_control_min_qty,$dut_yield_summary,\%data_1,\%data_2); # pass in hashes by reference      
         @parts=split(",",$stations);
         #print scalar(@parts);
          for($station=0;$station<scalar(@parts);$station++)
          {
          print "=".$parts[$station];
             if($parts[$station] eq "")
                    {
                          next;
                    }
                            #print "=".$parts[$station];
                    #printf "%d",$station;
           writeNanyaSocketDataToFile($TSE_socket_data_collect,"append",$parts[$station],%data_1,%data_2);# Generate socket data file
          # foreach  $infor( keys %data_1) # NOTE: NEED TO CAST SUBKEY AS HASH WHEN ITERATING THROUGH SUB HASH KEYS
                # {
                  #       delete $data_1{$infor};        
                 #}   
              #foreach  $infor( keys %data_2) # NOTE: NEED TO CAST SUBKEY AS HASH WHEN ITERATING THROUGH SUB HASH KEYS
                # {
                  #       delete $data_2{$infor};        
                 #}  
        }  

}
close FN;

sub   writeNanyaSocketDataToFile
{
      my ($TSE_socket_data_collect,$open_mode,$station)=@_;
     # my $TSE_socket_data_collect=$_[0];
     # my $tmpfile=$_[1];
      #my $open_mode=$_[2];
      #my $station=$_[3];
       $isprint_head=0;
       #printf "%d\n", $isprint_head;
      # $tmpfile="tmp.csv";
      open(IN,"<$TSE_socket_data_collect");
      open( OUT,">>$tmpfile");
       while(<IN>)
        {
                           chomp;
                           if($_ eq "")
                           {
                                   next;
                   }       
                   if(/TesterID/i)
           {
                   $isprint_head=1;   
                   next;              
             }
             else
                            {
                                     @parts=split(",",$_);
                               $tester=shift(@parts);
                               #printf "%s\t",$tester;
                               $data=shift(@parts);
                               #printf "%s\t",$data;
                               #printf "%s\n",$data_1{'date'};
                               #$a=$data eq $data_1{'date'};
                                #printf "%d",$a;
                               shift(@parts);
                               $lot_num=shift(@parts);
                               shift(@parts);
                               shift(@parts);
                                shift(@parts);
                                $sta= shift(@parts);
                               if($tester eq $data_1{'tester'}and $data eq $data_1{'date'} and $lot_num eq  $data_1{'lot_no'} and $sta eq $station)
                            {
                                  
                      $_=~s/$_//g;
                       print OUT $_;            
                      $_=<IN>;
                      $_=~s/$_//g;
                      print OUT $_;               
                     $_=<IN>;
                     $_=~s/$_//g;
                      print OUT $_;     
                        $_=<IN>;
                          $_=~s/$_//g;
                      print OUT $_;     
                          $_=~s/$_//g;
                        $_=<IN>;
                          $_=~s/$_//g;
                      print OUT $_;     
                        $_=<IN>;
                      $_=~s/$_//g;
                      print OUT $_;     
                        $_=<IN>;
                      $_=~s/$_//g;
                      print OUT $_;     
                        $_=<IN>;
                      print OUT $_;     
                        $_=<IN>;
                       $_=~s/$_//g;
                      print OUT $_;     
                             }   
                           else
                           {
                                     print OUT $_."\n";     
                       }         
                   }              
           }
           close(IN);
          close(OUT);
          unlink($TSE_socket_data_collect);
          rename($tmpfile,$TSE_socket_data_collect);
}

论坛徽章:
0
2 [报告]
发表于 2007-06-27 13:46 |只看该作者
customer_summary.txt
和TSE__ntc_socket_data_collect格式
这段代码的意思是删除有重复数据的行
运行格式
perl datasummary.pl 2
前面还有这行
$stations=$ARGV[0];#select the station

New Folder.rar

942 Bytes, 下载次数: 1341

论坛徽章:
0
3 [报告]
发表于 2007-07-06 16:06 |只看该作者
这段代码的意思是删除有重复数据的行
用类似下面的代码?
my %tmp_hash;
open (RD,"<file1");
open (WD,">file2");

while(<RD>)
{
        chomp;
        next if ($tmp_hash{$_});
        $tmp_hash{$_}=1;
        print WD,$_."\n";
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP