如何在if条件下求和?

Bxr*_*MKH 3 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";
Run Code Online (Sandbox Code Playgroud)

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

Bor*_*din 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
Run Code Online (Sandbox Code Playgroud)

产量

Total value below (8): 34.302
Run Code Online (Sandbox Code Playgroud)


Mil*_*ler 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
Run Code Online (Sandbox Code Playgroud)

输出:

34.302
Run Code Online (Sandbox Code Playgroud)