Acme-GRYLLIDA-Utils

 view release on metacpan or  search on metacpan

lib/Acme/GRYLLIDA/Utils.pm  view on Meta::CPAN


A list of functions that can be exported. 

sum()


=head1 SUBROUTINES/METHODS

=head2 sum

This function returns a sum of its arguments. Non-number arguments are ignored. No arguments returns undef.

=cut

sub sum {
  my $sum;
  foreach my $num ( grep {/\A-?\d+\.*\d*\z/ } @_ ) {
    $sum += $num;
  }
  $sum;
}

t/sum.t  view on Meta::CPAN

use Test::More;
BEGIN { use_ok( 'Acme::GRYLLIDA::Utils' ) }
ok(defined &sum, 'sum() is exported' );

is(sum( 1, 2, 3 ), 6, '1+2+3 is six' );
is(sum( qw(1 2 3) ), 6, '1+2+3 as strings is six' );
is(sum( 4, -9, 37, 6 ), 38, '4−9+37+6 is six' );
is(sum( 3.14, 2.2 ), 5.34, '3.14 + 2.2 is 5.34' );
is(sum(), undef, 'No arguments returns undef' );
is(sum( qw(a b) ), undef, 'All bad args gives undef' );
is(sum( qw(a b 4 5) ), 9, 'Some good args works' );

done_testing();



( run in 1.061 second using v1.01-cache-2.11-cpan-d80b1682f3f )