sub factorial { my ($n, $accumulator) = @_; $accumulator ||= 1; LOOP: if ($n == 0) { return $accumulator; } $accumulator *= $n; $n--; goto LOOP; }