Callback::Cleanup - Declare callbacks that clean themselves up


Callback-Cleanup documentation  | view source Contained in the Callback-Cleanup distribution.

Index


NAME

Top

Callback::Cleanup - Declare callbacks that clean themselves up

SYNOPSIS

Top

	use Callback::Cleanup;

	my $anon_sub = callback {
		# this is the sub body
	} cleanup {
		# this is called on DESTROY
	}

	# or

	Callback::Cleanup->new(
		sub { }, # callback
		sub { }, # cleanup
	);

DESCRIPTION

Top

This is a very simple module that provides syntactic sugar for callbacks that need to finalize somehow.

Callbacks are very convenient APIs when they have no definite end of life. If an end of life behavior is required this helps keep the cleanup code and callback code together.

EXPORTS

Top

callback BLOCK $cleanup
cleanup BLOCK $callback

Both of these exports act as the identity function when given only one parameter.

When given enough arguments they will create a Callback::Cleanup object.

This means that you can declare a callback with a cleanup like this:

	my $cleans_up = callback {

	} cleanup {

	}

Or a derived sub that cleans up an existing subref:

	my $cleans_up = cleanup {

	} \&needs_cleanup;

As well as a few other useless forms.

CLOSURES AND GARBAGE COLLECTION

Top

In perl code references that are not closures aren't garbage collected (they are shared).

This module uses clone_if_immortal in Sub::Clone to make sure timely destruction of these callbacks happens.

AUTHOR

Top

Yuval Kogman <nothingmuch@woobling.org>

COPYRIGHT & LICENSE

Top


Callback-Cleanup documentation  | view source Contained in the Callback-Cleanup distribution.