#!/usr/bin/env perl use strict; use warnings; use List::Util qw(reduce); my ($sum_of_squares, $sum); # Functional sub iter { my ($sum_of_squares, $sum) = @{+shift}; my $n = shift; $sum_of_squares += $n**2; $sum += $n; return [$sum_of_squares, $sum]; } ($sum_of_squares, $sum) = @{+reduce { iter($a, $b) } [0, 0], (1..100)}; print $sum_of_squares - ($sum**2), "\n"; # Imperative $sum_of_squares = 0; $sum = 0; for my $n (1..100) { $sum_of_squares += $n**2; $sum += $n; } print $sum_of_squares - ($sum**2), "\n";