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 * pseudoboolean context - the right side of && and the left side of || evaulate in boolean context, but still return a meaningful value. * Glob assignment context. I'm not sure how to make the value propagate back once it's been assigned to the glob - it's hard to know what it is without inspecting the slots and that's kinda tricky. * Lvalue assignment * use Sub::Uplevel to hide the wrapping * context arity - Want's count stuff. This can probably be done using @list[0..$x] = (...), but might need to be emulated with eval. See "perldoc -f split". ACKNOWLEGMENTS Robin Houston for Want and lots of help by email AUTHOR Yuval Kogman 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.