sub reduce (&@) { my $code_ref = shift; my $result = shift; for (@_ ) { local ($a, $b) = ($result, $_ ); $result = $code_ref->($a, $b ) } return $result; }