hash::util::fieldhash::compat(3pm) [debian man page]
Hash::Util::FieldHash::Compat(3pm) User Contributed Perl Documentation Hash::Util::FieldHash::Compat(3pm)NAME
Hash::Util::FieldHash::Compat - Use Hash::Util::FieldHash or ties, depending on availability.
SYNOPSIS
use Hash::Util::FieldHash::Compat;
# pretend you are using L<Hash::Util::FieldHash>
# under older perls it'll be Tie::RefHash::Weak instead (slower, but same behavior)
DESCRIPTION
Under older perls this module provides a drop in compatible api to Hash::Util::FieldHash using perltie. When Hash::Util::FieldHash is
available it will use that instead.
This way code requiring field hashes can benefit from fast, robust field hashes on Perl 5.10 and newer, but still run on older perls that
don't ship with that module.
See Hash::Util::FieldHash for all the details of the API.
SEE ALSO
Hash::Util::FieldHash, Tie::RefHash, Tie::RefHash::Weak.
VERSION CONTROL
This module is maintained using Darcs. You can get the latest version from <http://nothingmuch.woobling.org/code>, and use "darcs send" to
commit changes.
AUTHOR
Yuval Kogman <nothingmuch@woobling.org>
COPYRIGHT
Copyright (c) 2008 Yuval Kogman. All rights reserved
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
perl v5.12.4 2008-05-16 Hash::Util::FieldHash::Compat(3pm)
Check Out this Related Man Page
Tie::RefHash::Weak(3pm) User Contributed Perl Documentation Tie::RefHash::Weak(3pm)NAME
Tie::RefHash::Weak - A Tie::RefHash subclass with weakened references in the keys.
SYNOPSIS
use Tie::RefHash::Weak;
tie my %h, 'Tie::RefHash::Weak';
# OR:
use Tie::RefHash::Weak 'fieldhash';
fieldhash my %h;
{ # new scope
my $val = "foo";
$h{$val} = "bar"; # key is weak ref
print join(", ", keys %h); # contains $val, returns regular reference
}
# $val goes out of scope, refcount goes to zero
# weak references to $val are now undefined
keys %h; # no longer contains $val
# see also Tie::RefHash
DESCRIPTION
The Tie::RefHash module can be used to access hashes by reference. This is useful when you index by object, for example.
The problem with Tie::RefHash, and cross indexing, is that sometimes the index should not contain strong references to the objecs.
Tie::RefHash's internal structures contain strong references to the key, and provide no convenient means to make those references weak.
This subclass of Tie::RefHash has weak keys, instead of strong ones. The values are left unaltered, and you'll have to make sure there are
no strong references there yourself.
FUNCTIONS
For compatibility with Hash::Util::FieldHash, this module will, upon request, export the following two functions. You may also write "use
Tie::RefHash::Weak ':all'".
fieldhash %hash
This ties the hash and returns a reference to it.
fieldhashes \%hash1, \%hash2 ...
This ties each hash that is passed to it as a reference. It returns the list of references in list context, or the number of hashes in
scalar context.
THREAD SAFETY
Tie::RefHash version 1.32 and above have correct handling of threads (with respect to changing reference addresses). If your module
requires Tie::RefHash::Weak to be thread aware you need to depend on both Tie::RefHash::Weak and Tie::RefHash version 1.32 (or later).
Version 0.02 and later of Tie::RefHash::Weak depend on a thread-safe version of Tie::RefHash anyway, so if you are using the latest version
this should already be taken care of for you.
5.10.0 COMPATIBILITY
Due to a minor change in Perl 5.10.0 a bug in the handling of magic freeing was uncovered causing segmentation faults.
This has been patched but not released yet, as of 0.08.
CAVEAT
You can use an LVALUE reference (such as "substr ...") as a hash key, but due to a bug in perl (see
<http://rt.perl.org/rt3/Public/Bug/Display.html?id=46943>) it might not be possible to weaken a reference to it, in which case the hash
element will never be deleted automatically.
AUTHORS
Yuval Kogman <nothingmuch@woobling.org>
some maintenance by Hans Dieter Pearcey <hdp@pobox.com>
COPYRIGHT & LICENSE
Copyright (c) 2004 Yuval Kogman. All rights reserved
This program is free software; you can redistribute
it and/or modify it under the same terms as Perl itself.
SEE ALSO
Tie::RefHash, Class::DBI (the live object cache), "Perl_magic_killbackrefs" in mg.c
perl v5.10.1 2008-10-18 Tie::RefHash::Weak(3pm)