zoukankan      html  css  js  c++  java
  • perl 没有关键文件句柄引起的逻辑错误

    <pre name="code" class="sql">flow02:/home/tomcat> cat m1.pl 
    #!/usr/bin/perl 
    use POSIX;
    my $dir  = '/home/tomcat';
    my $file = '1.log';
    $mon_file = "$dir/$file";
    my $SDATE = strftime("%Y%m%d%H%M%S",localtime());
    $UPLOADPATH = "/data/swap/mbanklog/$IPMACHINE-$SDATE$file";
    ##########监控关键字,以空格隔开################
    @warn_arr = qw/Exception 555/;
    foreach $a (@warn_arr) {
        undef @err_info;
        open( C, "<", "$a.tmp" );
        while (<C>) {
            $count = $_;
        }
    print "=========================================================================================================================
    ";
    print "######监控异常关键字:      "$a"---数量=$count
    ";
        open( A, "<", "$mon_file" ) || die "$!
    ";
        $i   = 0;
        $num = 0;
        $b = 0;
        while (<A>) {
            $num++;
            if ( $_ =~ /$a/i ) { $i++; $b = $num }
        }
        print "######$b is $b######
    ";
            if ( $i != 0 && $i == $count && defined($count) ) {
            open( B, "<", "$mon_file" ) || die "$!
    ";
            while (<B>) {
            if  (($. >= "$b" -2) and  ($. <= "$b" + 2) ){push( @err_info, $_ ) };
            };
            print "######@err_info is   @err_info
    ";
    #close B;
        }
        open( C, ">", "$a.tmp" );
        print C ("$i
    ");
    }
    
    
    flow02:/home/tomcat> cat 1.log 
    4444
    2223
    5555
    java.lang.NullPointerException]
    4
    java.lang.NullPointerException
    5
    8
    
    
    flow02:/home/tomcat> perl m1.pl 
    =========================================================================================================================
    ######监控异常关键字:      "Exception"---数量=2
    
    $i is 2
    $b is 6
    ######$b is 6######
    ######@err_info is   java.lang.NullPointerException]
     4
     java.lang.NullPointerException
     5
     8
    
    =========================================================================================================================
    ######监控异常关键字:      "555"---数量=1
    
    $i is 1
    $b is 3
    ######$b is 3######
    ######@err_info is    ###这个地方没有打印第3行的上下2行,为什么呢?
    
    $i 表示匹配关键字的次数
    
    
    
    产生原因为没有关键文件句柄B;
    
    flow02:/home/tomcat> perl m1.pl 
    =========================================================================================================================
    ######监控异常关键字:      "Exception"---数量=2
    
    $i is 2
    $b is 6
    ######$b is 6######
    ######@err_info is   java.lang.NullPointerException]
     4
     java.lang.NullPointerException
     5
     8
    
    =========================================================================================================================
    ######监控异常关键字:      "555"---数量=1
    
    $i is 1
    $b is 3
    ######$b is 3######
    ######@err_info is   4444
     2223
     5555
     java.lang.NullPointerException]
     4
    
    为什么呢?没有关闭文件句柄,行号累加了。
    
    flow02:/home/tomcat> perl m1.pl 
    =========================================================================================================================
    ######监控异常关键字:      "Exception"---数量=2
    
    $i is 2
    $count is 2
    
    ######$b is 6######
    $. is 1
    $. is 2
    $. is 3
    $. is 4
    $. is 5
    $. is 6
    $. is 7
    $. is 8
    ######@err_info is   java.lang.NullPointerException]
     4
     java.lang.NullPointerException
     5
     8
    
    =========================================================================================================================
    ######监控异常关键字:      "555"---数量=1
    
    $i is 1
    $count is 1
    
    ######$b is 3######
    $. is 9
    $. is 10
    $. is 11
    $. is 12
    $. is 13
    $. is 14
    $. is 15
    $. is 16
    ######@err_info is 


    
                                        
    
  • 相关阅读:
    .Net下的MSMQ(微软消息队列)的同步异步调用
    [收藏]JS获取网页中HTML元素的几种方法分析
    在FireFox下设为首页的解决方法
    如何创建和使用Web Service代理类
    [收藏]61条面向对象设计的经验原则
    [总结]DotNet中用到的加密算法总结
    如何把用SQL语句int型整数转换成二进制数
    彻底杜绝PHP的session,cookie,Cannot modify header错误
    MSN总是报80048820的错误,网上搜的一些资料解决不了,我找到了真正解决办法!
    [收藏]MD5加密的javascript实现
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351249.html
Copyright © 2011-2022 走看看