use strict; # leak occurs whether strict is used or not my $fact = build_sub(); while(1) { print &$fact(5), $/; } sub build_sub { my $factorial_sub_ref; $factorial_sub_ref = sub { my ($number) = @_; if ($number < 2) { return 1; } return($number * &$factorial_sub_ref($number - 1)); }; return $factorial_sub_ref; }