Chinaunix

标题: 文件存值的問題 [打印本页]

作者: kfcdog0419    时间: 2014-03-24 18:09
标题: 文件存值的問題
本帖最后由 kfcdog0419 于 2014-03-24 18:09 编辑

open $info, "perl.log" or die "Could not open file";
open (OUTFILEQA, ">icc_result.log");
$prev_line;
$prev_col1;
$prev_col2;
$flag = 0;
$X1;
$X2;
$Y1;
$Y2;
while($line = <$info>)     {   
        if($flag ==0){
               
                $line =~ m/(-{0,1}\d+.\d+)\s(-{0,1}\d+\.\d+)/;
               
                if($1 > 28 ) {
                       
                        $flag = 1;
                        $X1 = $prev_col1;
                        $Y1 = $prev_col2;
                        $X2 = $1;
                        $Y2 = $2;
                }
                $prev_line=$line;
                $prev_col1=$1;
                $prev_col2=$2;
        }
}
my $result = (($Y2*28-$Y1*28-$Y2*$X1+$Y1*$X2)/($X2-$X1+0.00000001));

print OUTFILEQA "${names} $result\n";


close $info;
close OUTFILEQA;
=================================================================================

以上是我的code,主要內容是找$1>28的那一行跟前一行,我會把這放在foreach裡面,對很多個檔案執行,
但現在的問題在於我的檔案不是每個都會有$1大於28的時候,當發生這情形時我希望我的X1.X2.Y1.Y2都為0,會算出result=0
不然以現在的code如果有一個檔案$1沒有>28的時候,我的result值會等於上一個檔案的result值

謝謝大大
作者: q1208c    时间: 2014-03-24 19:25
  1. while($line = <$info>)     {
复制代码
这行下面加上
  1. $X1 = 0;
  2. $X2 = 0;
  3. $Y1 = 0;
  4. $Y2 = 0;
复制代码

作者: pitonas    时间: 2014-03-24 19:28
  1. #!/usr/bin/perl

  2. open $info, "perl.log" or die "Could not open file";
  3. open( OUTFILEQA, ">icc_result.log" );

  4. # $prev_line;
  5. # $flag = 0;

  6. my ( $prev_col1, $prev_col2 );
  7. my $result = 0; # 沒有 $1  > 28, result = 0

  8. while (<$info>) {
  9.     if (/(-{0,1}\d+.\d+)\s(-{0,1}\d+\.\d+)/) {
  10.         if ( $1 > 28 ) {
  11.             my $X1 = $prev_col1;
  12.             my $Y1 = $prev_col2;
  13.             my $X2 = $1;
  14.             my $Y2 = $2;
  15.             $result =
  16.               ( ( $Y2 * 28 - $Y1 * 28 - $Y2 * $X1 + $Y1 * $X2 ) /
  17.                   ( $X2 - $X1 + 0.00000001 ) );
  18.             last;
  19.         }

  20.         # $prev_line = $line;
  21.         $prev_col1 = $1;
  22.         $prev_col2 = $2;
  23.     }
  24. }
  25. print OUTFILEQA " $result\n";    # $names NOVALUE

  26. # print OUTFILEQA "${names} $result\n";

  27. close $info;
  28. close OUTFILEQA;

  29. __DATA__
复制代码





欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2