File Coverage

blib/lib/Data/Unixish/avg.pm
Criterion Covered Total %
statement 27 27 100.0
branch 3 4 75.0
condition n/a
subroutine 7 7 100.0
pod 1 1 100.0
total 38 39 97.4


line stmt bran cond sub pod time code
1             package Data::Unixish::avg;
2              
3 1     1   484 use 5.010;
  1         7  
4 1     1   6 use strict;
  1         2  
  1         22  
5 1     1   419 use syntax 'each_on_array'; # to support perl < 5.12
  1         23631  
  1         4  
6 1     1   3512 use warnings;
  1         2  
  1         26  
7             #use Log::Any '$log';
8              
9 1     1   429 use Data::Unixish::Util qw(%common_args);
  1         2  
  1         115  
10 1     1   7 use Scalar::Util 'looks_like_number';
  1         2  
  1         183  
11              
12             our $VERSION = '1.571'; # VERSION
13              
14             our %SPEC;
15              
16             $SPEC{avg} = {
17             v => 1.1,
18             summary => 'Average numbers',
19             args => {
20             %common_args,
21             },
22             tags => [qw/datatype:num group/],
23             };
24             sub avg {
25 1     1 1 4 my %args = @_;
26 1         2 my ($in, $out) = ($args{in}, $args{out});
27              
28 1         2 my $sum = 0;
29 1         1 my $n = 0;
30 1         5 while (my ($index, $item) = each @$in) {
31 5         7 $n++;
32 5 100       20 $sum += $item if looks_like_number($item);
33             }
34              
35 1 50       6 my $avg = $n ? $sum/$n : 0;
36              
37 1         2 push @$out, $avg;
38 1         4 [200, "OK"];
39             }
40              
41             1;
42             # ABSTRACT: Average numbers
43              
44             __END__