免费注册 查看新帖 |

Chinaunix

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

split取值運算 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-10 10:16 |只看该作者 |倒序浏览
0.5    Pout=-47dBm    Low    I_Vbat_mA=1.94556987149179    I_VCC_mA=23.7059116297602
0.7    Pout=-37dBm    Low    I_Vbat_mA=1.94557990503659    I_VCC_mA=23.706697551521
1.5    Pout=-27dBm    Low    I_Vbat_mA=1.94568025699335    I_VCC_mA=23.7145579148306
3.5    Pout=-17dBm    Low    I_Vbat_mA=1.94668541310778    I_VCC_mA=23.7932750423457
5.3    Pout=-12dBm    Low    I_Vbat_mA=1.9491121540765    I_VCC_mA=23.9832133228051
7.9    Pout=-9dBm    Low    I_Vbat_mA=1.95194831243512    I_VCC_mA=24.2050725968658
10.6    Pout=-6dBm    Low    I_Vbat_mA=1.95842079060782    I_VCC_mA=24.7106986460932
12.2    Pout=-3dBm    Low    I_Vbat_mA=1.97164325576953    I_VCC_mA=25.7411442968625
12.9    Pout=0dBm    Low    I_Vbat_mA=1.99884117850833    I_VCC_mA=27.852162869672
12.2    Pout=3dBm    Low    I_Vbat_mA=2.053693419111    I_VCC_mA=32.085846030647
10.6    Pout=6dBm    Low    I_Vbat_mA=2.15592404340818    I_VCC_mA=39.9310418321667
8    Pout=9dBm    Mid    I_Vbat_mA=2.95840716482103    I_VCC_mA=58.2423499883131
5.3    Pout=12dBm    Mid    I_Vbat_mA=3.18089270168648    I_VCC_mA=75.3080295540247
3.5    Pout=15dBm    High    I_Vbat_mA=5.1307398098808    I_VCC_mA=114.659294339508
1.5    Pout=18dBm    High    I_Vbat_mA=5.5563859318755    I_VCC_mA=147.496953503609
2    Pout=21dBm    High    I_Vbat_mA=6.22621731116554    I_VCC_mA=199.320183706146
1.2    Pout=24dBm    High    I_Vbat_mA=7.20924368669369    I_VCC_mA=276.030331487241
0.6    Pout=27dBm    High    I_Vbat_mA=8.60725497986411    I_VCC_mA=387.04276947698

====================================================================
我想要對每行的 (I_Vbat_mA + I_VCC_mA)*第一項的值 然後再全部加起來print出來

我用split 可以算出每一行得結果 可是如何加總起來?

謝謝大大!!


以下是我目前的


open (INFILEQ, "result.txt") or die ("Unable to open file\n");
open (OUTFILEQ, ">final_result.txt");
while(<INFILEQ>)
{
   @array = split /=/, $_;
    $add = (($array[2] + $array[3]) * $array[0]);  

   print "$add\n";
   
}   

论坛徽章:
0
2 [报告]
发表于 2013-09-10 10:37 |只看该作者
再定义一个变量$temp=0,在foreach循环最低下面 加一句 $temp +=$add;
话说你用@array = split /=/, $_;真的能取出你要的项吗?用=作分节符分出来的不是类似于 (“0.5    Pout”,“-47dBm    Low    I_Vbat_mA”,“1.94556987149179    I_VCC_mA”,“23.7059116297602”)之类的东西吗? $array[0]  $array[2]   $array[3]都不是你想要的东西啊。我建议用/ /分,然后对后两项再处理。

论坛徽章:
0
3 [报告]
发表于 2013-09-10 10:38 |只看该作者
  1. while (<INFILEQ>) {
  2.         chomp;
  3.         my ($col1,$Vbat,$VCC) = (/^(.*?)\s+.*?I_Vbat_mA=(.*?)\s+I_VCC_mA=(.*?)$/i);
  4.         my $add = $col1*($Vbat+$VCC);
  5.         print "$add\n";
  6.         $result += $add;
  7. }
  8. print "Total: $result\n";
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-09-10 11:39 |只看该作者
回复 3# iamlimeng


    謝謝各位大大!!感激不盡
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP