Perl is reference counted. At block end, variables that have no references left are cleaned up. So if you keep a reference to a variable in a closure, it survives longer than if you don't.

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