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, <[email protected]>

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.