NAME

Devel::Pointer::PP - Fiddle around with pointers

SYNOPSIS

use Devel::Pointer::;
$a = address_of($b);   # a = &b;
$b = ${deref($a)};        # b = *a;

$a = unsmash_sv(0+$scalar_ref);
@a = unsmash_av(0+$array_ref);
%a = unsmash_hv(0+$hash_ref);
&a = unsmash_cv(0+$code_ref); 
# Yes, you can do that. You get the idea.

$c = deref(-1);        # *(-1), and the resulting segfault.

DESCRIPTION

The primary purpose of this is to turn a smashed reference address back into a value. Once a reference is treated as a numeric value, you can't dereference it normally; although with this module, you can.

Be careful, though, to avoid dereferencing things that don't want to be dereferenced.

EXPORT

All of the above

AUTHOR

Joshua b. Jore jjore@cpan.org

Simon Cozens wrote the XS version and then some loony put an object_2svref method into perl 5.8.1's B module and enabled me to rewrite the thing in pure perl.

SEE ALSO

Devel::Pointer, Devel::Peek, perlref, B::Generate