NAME

Variable::OnDestruct::Scoped - Call a subroutine on destruction of a variable.

VERSION

version 0.002

SYNOPSIS

use Variable::OnDestruct::Scoped;

my @handle = on_destruct $var, sub { do_something() };
push @handle, on_destruct @array, sub { do_something_else() };
push @handle, on_destruct %array, sub { hashes_work_too() };
push @handle, on_destruct &$sub, sub { so_do_closures($but_not_normal_subs) };
push @handle, on_destruct *$glob, sub { and_even_globs($similar_caveats_as_subs_though) };

@handle = () if $want_to_cancel_destructor;

DESCRIPTION

This module allows you to let a function be called when a variable gets destroyed. The destructor will work not only on scalars but also on arrays, hashes, subs and globs. For the latter two you should realize that most of them aren't scoped like normal variables. Subs for example will only work like you expect them to when they are closures (otherwise they're immortal).

FUNCTIONS

on_destruct $variable, \⊂

This function adds a destructor callback to a variable. This callback will be called when the variable is destroyed, but only if the canary it returns is still alive (meaning it's stored somewhere). If the canary is destructed first the callback will not be called. This function is exported by default.

SEE ALSO

AUTHOR

Leon Timmermans <fawaka@gmail.com>

COPYRIGHT AND LICENSE

This software is copyright (c) 2011 by Leon Timmermans.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.