1N/ATie::RefHash - use references as hash keys 1N/A tie HASHVARIABLE, 'Tie::RefHash', LIST; 1N/A tie HASHVARIABLE, 'Tie::RefHash::Nestable', LIST; 1N/AThis module provides the ability to use references as hash keys if you 1N/Afirst C<tie> the hash variable to this module. Normally, only the 1N/Akeys of the tied hash itself are preserved as references; to use 1N/Areferences as keys in hashes-of-hashes, use Tie::RefHash::Nestable, 1N/Aincluded as part of Tie::RefHash. 1N/AIt is implemented using the standard perl TIEHASH interface. Please 1N/Asee the C<tie> entry in perlfunc(1) and perltie(1) for more information. 1N/AThe Nestable version works by looking for hash references being stored 1N/Aand converting them to tied hashes so that they too can have 1N/Areferences as keys. This will happen without warning whenever you 1N/Astore a reference to one of your own hashes in the tied hash. 1N/A tie %h, 'Tie::RefHash'; 1N/A %h = ($a => 1, $b => 2, $c => 3, $d => 4, $e => 5); 1N/A print ref($_), "\n"; 1N/A tie %h, 'Tie::RefHash::Nestable'; 1N/A for (keys %h, keys %{$h{$a}}) { 1N/A print ref($_), "\n"; 1N/AGurusamy Sarathy gsar@activestate.com 1N/A'Nestable' by Ed Avis ed@membled.com 1N/Aperl(1), perlfunc(1), perltie(1) 1N/Arequire overload;
# to support objects with overloaded "" 1N/A my($s, $k, $v) = @_;
1N/A keys %{$s->[
0]};
# reset iterator 1N/A keys %{$s->[
1]};
# reset iterator 1N/A $s->[
2] =
0;
# flag for iteration, see NEXTKEY 1N/A if (($k, $v) =
each %{$s->[
0]}) {
1N/A return each %{$s->[
1]};
1N/A my($s, $k, $v) = @_;
1N/A if (
ref($v)
eq 'HASH' and not tied %$v) {