When I create a closure, are unqualified function names permanently tied to a particular package, or is it possible to change what package they will be looked up in at the time the closure is executed?
Example:
package other;
sub hello { ... }
package main;
sub foo {
# some magic here to make hello -> other::hello?
$_[0]->();
}
foo(sub { hello() });
When this code is executed, the call
hello() will try to call
main::hello. However, is it possible to put some magic in
foo so that the function call
hello() will be resolved as a call to
other::hello()?