sub once { my $wrapper; $wrapper = sub { print 1; }; weaken $wrapper; return $wrapper; } my $on = once; $on->();