#! perl -slw use strict; use Scalar::Util qw[ weaken ]; sub once { my $wrapper; $wrapper = sub { return $wrapper->(); }; # weaken $wrapper; return $wrapper; } once for 1 .. 1e9;