my $x = 4; my $y = 3; my $z = $x * $y; say $z; #### use 5.010; my @numbers = qw(1 3 5 6 7 8); my $sum = 0; for my $num (@numbers) { $sum += $num; } say $sum; #### use 5.010; my @numbers = qw(1 3 5 6 7 8); sub sum { my $sum = 0; for my $num (@_) { $sum += $num; } return $sum; } say sum(@numbers); #### use 5.010; my @numbers = qw(1 3 5 6 7 8); sub reduce (&@) { my ($code, $first, @rest) = @_; return $first unless @rest; return $code->( $first, reduce($code, @rest), ); } sub sum { return reduce { $_[0] + $_[1] } @_; } say sum @numbers; #### use 5.010; use IO::Handle; my @numbers = qw(1 3 5 6 7 8); { package Sum; use Any::Moose; has total => (is => 'rw', isa => 'Num', default => 0); sub add { my ($self, $num) = @_; $self->total( $self->total + $num ); } } my $answer = Sum->new; $answer->add($_) for @numbers; STDOUT->say( $answer->total );