With the exception of not cleaning up circular data structures, this does what most people want, when they want it done.
I'm not sure what need you have that isn't being met. If you want a subroutine which is lexically scoped, though, you can easily do it with the following trick:
\n my $lexically_scoped_sub = sub {print "Body here\\n"};\n # time passes.\n $lexically_scoped_sub->(@arguments, @here);\n
Cheers,
Ben