http://www.perlmonks.org?node_id=733661


in reply to Overloading '{}' or 'sub'

See Scope::Guard, which is designed to do exactly that, you create it with a subroutine to run when it goes out of scope...

use strict; use warnings; use Scope::Guard; sub foo { my $blah = shift; my $sg = Scope::Guard->new( sub { print "This runs at the end of the scope\n"; } ); print "Doing some other stuff now...\n"; }

www.jasonkohles.com
We're not surrounded, we're in a target-rich environment!