如何在if条件下求和?

时间:2014-06-20 17:10:30

标签: perl

我的输出有很多值。但总结特定的价值观。 我的回答是这样的

# $ans 
3.801
5.381
16.26
3.801
18.3
3.80
5.151
5.636
6.732
.
.
.

my $sum;
if($ans <= 8)
{ 
     $sum += $ans;
     print "$ans\n\n\n";

}
print "Total value below (8) : $sum";

如何在if条件之外的8以下求答?我该怎么做?

2 个答案:

答案 0 :(得分:6)

另一种不需要模块的方式。

use strict;
use warnings;

my $sum;
$_ < 8 and $sum += $_ while <DATA>;

print "Total value below (8): $sum\n";

__DATA__
3.801
5.381
16.26
3.801
18.3
3.80
5.151
5.636
6.732

<强>输出

Total value below (8): 34.302

答案 1 :(得分:5)

只需使用grep过滤掉列表中不需要的数字,然后使用List::Util qw(sum)

use strict;
use warnings;

use List::Util qw(sum);

my $sum = sum grep {$_ < 8} <DATA>;

print $sum;

__DATA__
3.801
5.381
16.26
3.801
18.3
3.80
5.151
5.636
6.732

输出:

34.302