Joshua ben Jore > Devel-Pointer-PP-1.01 > Devel::Pointer::PP

Download:
Devel-Pointer-PP-1.01.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 1.01   Source  

NAME ^

Devel::Pointer::PP - Fiddle around with pointers, safer than Devel::Pointer

SYNOPSIS ^

 use Devel::Pointer ':all';
 
 my $addr = address_of( $val );

 # Dereference by address
 my $val2 = ${deref( $addr )};
 
 # Dereference a reference
 my $val2 = ${deref( \ $val )};
 
 # Dereference a stringified reference
 my $val2 = ${deref( "" . \ $val );
 
 $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 or string 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 ben 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

syntax highlighting: