use strict; # leak occurs whether strict is used or not while(1) { &leak(); } sub leak { my $sub_ref; $sub_ref = sub { &$sub_ref(); }; return 0; } #### sub leak { my $factorial_sub_ref; $factorial_sub_ref = sub { my ($number) = @_; if ($number < 2) { return 1; } return($number + &$factorial_sub_ref($number - 1)); }; return 0; }