Как суммировать значения в условии if?

#perl

#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 "$ansnnn";

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

Как суммировать ответ ниже 8 вне условия if? Как я могу это сделать?

Ответ №1:

Другой способ, для которого не нужен модуль.

 use strict;
use warnings;

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

print "Total value below (8): $sumn";

__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
  

Ответ №2:

Просто используйте 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