免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3191 | 回复: 2
打印 上一主题 下一主题

文件存值的問題 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 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值

謝謝大大

论坛徽章:
33
荣誉会员
日期:2011-11-23 16:44:17天秤座
日期:2014-08-26 16:18:20天秤座
日期:2014-08-29 10:12:18丑牛
日期:2014-08-29 16:06:45丑牛
日期:2014-09-03 10:28:58射手座
日期:2014-09-03 16:01:17寅虎
日期:2014-09-11 14:24:21天蝎座
日期:2014-09-17 08:33:55IT运维版块每日发帖之星
日期:2016-04-17 06:23:27操作系统版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-24 06:20:0015-16赛季CBA联赛之天津
日期:2016-05-06 12:46:59
2 [报告]
发表于 2014-03-24 19:25 |只看该作者
  1. while($line = <$info>)     {
复制代码
这行下面加上
  1. $X1 = 0;
  2. $X2 = 0;
  3. $Y1 = 0;
  4. $Y2 = 0;
复制代码

论坛徽章:
5
丑牛
日期:2014-01-21 08:26:26卯兔
日期:2014-03-11 06:37:43天秤座
日期:2014-03-25 08:52:52寅虎
日期:2014-04-19 11:39:48午马
日期:2014-08-06 03:56:58
3 [报告]
发表于 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__
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP