The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Callback - object interface for function callbacks

SYNOPSIS

        use Callback;

        my $callback = new Callback (\&myfunc, @myargs);
        my $callback = new Callback ($myobj, $mymethod, @myargs);

        $callback->call(@some_more_args);

DESCRIPTION

Callback provides a standard interface to register callbacks. Those callbacks can be either purely functional (i.e. a function call with arguments) or object-oriented (a method call on an object).

When a callback is constructed, a base set of arguments can be provided. These function arguments will preceed any arguments added at the time the call is made.

There are two forms for the callback constructor, depending on whether the call is a pure functional call or a method call. The rule is that if the first argument is an object, then the second argument is a method name to be called on that object. Method resolution happens at the time the Callback object is built: an error will be raised if it cannot be found.

Callback objects built for object-oriented calls also have the property of being serializable via Storable. Purely functional callabacks cannot be serialized because CODE references are not supported by Storable.

TRACING

        use Callback qw(@callbackTrace);

If you're writing a debugging routine that provides a stack-dump (for example, Carp::confess) it is useful to know where a callback was registered.

        my $ct = 0;
        while (($package, $file, $line, $subname, $hasargs, $wantarray) = caller($i++)) {
            ...

            if ($subname eq 'Callback::call') {
                print "callback registered $Callback::callbackTrace[$ct]\n";
                $ct++;
            }
        }

Without such code, it becomes very hard to know what's going on.

COPYRIGHT

Copyright (C) 1994, 2000, David Muir Sharnoff. All rights reserved. License hearby granted for anyone to use this module at their own risk. Please feed useful changes back to muir@idiom.com.

AUTHORS

David Muir Sharnoff <muir@idiom.com> and Raphael Manfredi <Raphael_Manfredi@pobox.com>

SEE ALSO

Storable(3).