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, <torsten.foertsch@gmx.net>

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.