יובל קוג'מן (Yuval Kogman) > Context-Handle-0.01 > Context::Handle

Download:
Context-Handle-0.01.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.01   Source  

NAME ^

Context::Handle - A convenient context propagation proxy thingy.

SYNOPSIS ^

        use Context::Handle qw/context_sensitive/;

        sub wrapping {
                my $rv = context_sensitive {
                        $some_thing->method(); # anything really
                };

                # you can do anything here

                $rv->return; # returns the value in the right context

                # not reached
        }

DESCRIPTION ^

This module lets you delegate to another method and return the value without caring about context propagation.

The level of support is tied to what Want does - this module tries to make all the distinctions Want can make fully supported, for example array dereference context, boolean context, etc.

EXPORTS ^

Nothing is exported by default.

context_sensitive BLOCK

This is a convenience shortcut that calls new

METHODS ^

Regular Usage

new $code

This method invokes $code in the calling sub's context, and returns an object that saves the return value.

rv_container

This instance method returns the return value container object. The only useful methods for the RV containers is value, which has a delegator anyway.

value

This returns the value from the rv_container

return

This (ab)uses Want to perform a double return.

Saying

        $rv->return;

is just like

        return $rv->value;

Introspection

Incidientially due to the needs of the wrapping layer this module also provides an OO interface to Want, more or less ;-)

bool
void
scalar
list
refarray
refhash
refscalar
refobject
refcode
refglob

All of these methods return boolean values, with respect to the

TODO ^

ACKNOWLEGMENTS ^

Robin Houston for Want and lots of help by email

AUTHOR ^

Yuval Kogman <nothingmuch@woobling.org>

COPYRIGHT & LICENSE ^

        Copyright (c) 2006 the aforementioned authors. All rights
        reserved. This program is free software; you can redistribute
        it and/or modify it under the same terms as Perl itself.
syntax highlighting: