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
在
while($line = <$info>) {
复制代码
这行下面加上
$X1 = 0;
$X2 = 0;
$Y1 = 0;
$Y2 = 0;
复制代码
作者:
pitonas
时间:
2014-03-24 19:28
#!/usr/bin/perl
open $info, "perl.log" or die "Could not open file";
open( OUTFILEQA, ">icc_result.log" );
# $prev_line;
# $flag = 0;
my ( $prev_col1, $prev_col2 );
my $result = 0; # 沒有 $1 > 28, result = 0
while (<$info>) {
if (/(-{0,1}\d+.\d+)\s(-{0,1}\d+\.\d+)/) {
if ( $1 > 28 ) {
my $X1 = $prev_col1;
my $Y1 = $prev_col2;
my $X2 = $1;
my $Y2 = $2;
$result =
( ( $Y2 * 28 - $Y1 * 28 - $Y2 * $X1 + $Y1 * $X2 ) /
( $X2 - $X1 + 0.00000001 ) );
last;
}
# $prev_line = $line;
$prev_col1 = $1;
$prev_col2 = $2;
}
}
print OUTFILEQA " $result\n"; # $names NOVALUE
# print OUTFILEQA "${names} $result\n";
close $info;
close OUTFILEQA;
__DATA__
复制代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2