Scope::Guard.3pm

Langue: en

Version: 2007-01-07 (debian - 07/07/09)

Section: 3 (Bibliothèques de fonctions)

NAME

Scope::Guard - lexically scoped resource management

SYNOPSIS

         my $sg = Scope::Guard->new(sub { ... });
 
 
           # or
 
 
         my $sg = Scope::Guard->new(\&handler);
 
 
         $sg->dismiss(); # disable the handler
 
 

DESCRIPTION

This module provides a convenient way to perform cleanup or other forms of resource management at the end of a scope. It is particularly useful when dealing with exceptions: the Scope::Guard constructor takes a reference to a subroutine that is guaranteed to be called even if the thread of execution is aborted prematurely. This effectively allows lexically-scoped ``promises'' to be made that are automatically honoured by perl's garbage collector.

For more information, see: <http://www.cuj.com/documents/s=8000/cujcexp1812alexandr/>

new

usage

     my $sg = Scope::Guard->new(sub { ... });
 
 
           # or
 
 
     my $sg = Scope::Guard->new(\&handler);
 
 

description

Create a new Scope::Guard object which calls the supplied handler when its "DESTROY" method is called, typically when it goes out of scope.

dismiss

usage

     $sg->dismiss();
 
 
           # or
 
 
     $sg->dismiss(1);
 
 

description

Detach the handler from the Scope::Guard object. This revokes the ``promise'' to call the handler when the object is destroyed.

The handler can be re-enabled by calling:

         $sg->dismiss(0);
 
 

VERSION

0.03

SEE ALSO

* Hook::LexWrap
* Hook::Scope
* Sub::ScopeFinalizer
* Object::Destroyer

AUTHOR

chocolateboy: <chocolate.boy@email.com> Copyright (c) 2005-2007, chocolateboy.

This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.