NAME Perl::AtEndOfScope - run some code when a variable goes out of scope SYNOPSIS use Perl::AtEndOfScope; use Cwd; { my $restorecwd=Perl::AtEndOfScope->new( sub{chdir $_[0]}, getcwd ); chdir '/path/to/some/directory'; ... } # now we are back to the old cwd # or better using the undocumented "chdir FILEHANDLE" use Perl::AtEndOfScope; { my $restorecwd=Perl::AtEndOfScope->new( sub{chdir $_[0]}, do {opendir my $d, '.'; $d} ); chdir '/path/to/some/directory'; ... } # now we are back to the old cwd INSTALLATION perl Makefile.PL make make test make install DESCRIPTION It's often necessary to do some cleanup at the end of a scope. This module creates a Perl object and executes arbitrary code when the object goes out of scope. METHODS Perl::AtEndOfScope->new( $sub, @args ) the constructor. The code reference passed in $sub is called with @args as parameter list when the object is destroyed. While $sub is executed the following variables are preserved: $@, $a, $b, $_, $., $!, $^E, $? This list can grow in future versions. $sub is executed within an eval block. You can check $Perl::AtEndOfFile::EXC to see if an exception has been thrown by it. $Perl::AtEndOfScope::EXC is not stringified. If multiple Perl::AtEndOfScope objects are destroyed at the same time only the last exception thrown by one of them is saved. DESTROY( $self ) the destructor. EXPORT Not an Exporter. AUTHOR Torsten Foertsch, COPYRIGHT AND LICENSE Copyright (C) 2005-2008 by Torsten Foertsch This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.