NAME
WeakRef::Auto - Automatically makes references weaken
VERSION
This document describes WeakRef::Auto version 0.02.
SYNOPSIS
use
WeakRef::Auto;
autoweaken
my
$ref
;
# $ref is always weaken
$ref
= \
$var
;
# $ref is weak
sub
MyNode::new{
# ...
autoweaken
$self
->{parent};
# parent is always weaken
return
$self
;
}
DESCRIPTION
This module provides autoweaken()
, which keeps references weaken.
FUNCTIONS
autoweaken($var)
Turns $var into auto-weaken variables, and keeps the values weak references. If $var already has a reference, it is weaken on the spot.
$var can be an element of hashes or arrays.
NOTES
Because the prototype of
autoweaken()
is"\$"
(i.e.autoweakn($var)
actually means&autoweaken(\$var)
), you'd better load this module in compile-time, usinguse WeakRef::Auto
directive.
BUGS AND LIMITATIONS
autoweaken()
does not work with tied variables, because autoweaken-ness is attached to the variable, not to the value referred by the variable, and tied variables interact with their objects by values, not variables, as the following shows:
my
$impl
=
tie
my
%hash
,
'Tie::StdHash'
;
autoweaken
$hash
{foo};
# $hash{foo} seems autoweaken. Really?
# Actually, $hash{foo} is linked to $impl->{foo} through FETCH()/STORE() methods,
# but there is no way to detect the relationship.
Patches are welcome.
DEPENDENCIES
Perl 5.8.1 or later.
SEE ALSO
Scalar::Util for a description of weak references.
AUTHOR
Goro Fuji <gfuji(at)cpan.org>.
LICENSE AND COPYRIGHT
Copyright (c) 2008, Goro Fuji <gfuji(at)cpan.org>. Some rights reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.