Add built local::lib
[catagits/Gitalist.git] / local-lib5 / man / man3 / Tie::RefHash::Weak.3pm
1 .\" Automatically generated by Pod::Man 2.22 (Pod::Simple 3.10)
2 .\"
3 .\" Standard preamble:
4 .\" ========================================================================
5 .de Sp \" Vertical space (when we can't use .PP)
6 .if t .sp .5v
7 .if n .sp
8 ..
9 .de Vb \" Begin verbatim text
10 .ft CW
11 .nf
12 .ne \\$1
13 ..
14 .de Ve \" End verbatim text
15 .ft R
16 .fi
17 ..
18 .\" Set up some character translations and predefined strings.  \*(-- will
19 .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left
20 .\" double quote, and \*(R" will give a right double quote.  \*(C+ will
21 .\" give a nicer C++.  Capital omega is used to do unbreakable dashes and
22 .\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,
23 .\" nothing in troff, for use with C<>.
24 .tr \(*W-
25 .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'
26 .ie n \{\
27 .    ds -- \(*W-
28 .    ds PI pi
29 .    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch
30 .    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch
31 .    ds L" ""
32 .    ds R" ""
33 .    ds C` ""
34 .    ds C' ""
35 'br\}
36 .el\{\
37 .    ds -- \|\(em\|
38 .    ds PI \(*p
39 .    ds L" ``
40 .    ds R" ''
41 'br\}
42 .\"
43 .\" Escape single quotes in literal strings from groff's Unicode transform.
44 .ie \n(.g .ds Aq \(aq
45 .el       .ds Aq '
46 .\"
47 .\" If the F register is turned on, we'll generate index entries on stderr for
48 .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
49 .\" entries marked with X<> in POD.  Of course, you'll have to process the
50 .\" output yourself in some meaningful fashion.
51 .ie \nF \{\
52 .    de IX
53 .    tm Index:\\$1\t\\n%\t"\\$2"
54 ..
55 .    nr % 0
56 .    rr F
57 .\}
58 .el \{\
59 .    de IX
60 ..
61 .\}
62 .\"
63 .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2).
64 .\" Fear.  Run.  Save yourself.  No user-serviceable parts.
65 .    \" fudge factors for nroff and troff
66 .if n \{\
67 .    ds #H 0
68 .    ds #V .8m
69 .    ds #F .3m
70 .    ds #[ \f1
71 .    ds #] \fP
72 .\}
73 .if t \{\
74 .    ds #H ((1u-(\\\\n(.fu%2u))*.13m)
75 .    ds #V .6m
76 .    ds #F 0
77 .    ds #[ \&
78 .    ds #] \&
79 .\}
80 .    \" simple accents for nroff and troff
81 .if n \{\
82 .    ds ' \&
83 .    ds ` \&
84 .    ds ^ \&
85 .    ds , \&
86 .    ds ~ ~
87 .    ds /
88 .\}
89 .if t \{\
90 .    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u"
91 .    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'
92 .    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'
93 .    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'
94 .    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'
95 .    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'
96 .\}
97 .    \" troff and (daisy-wheel) nroff accents
98 .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'
99 .ds 8 \h'\*(#H'\(*b\h'-\*(#H'
100 .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#]
101 .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'
102 .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'
103 .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#]
104 .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#]
105 .ds ae a\h'-(\w'a'u*4/10)'e
106 .ds Ae A\h'-(\w'A'u*4/10)'E
107 .    \" corrections for vroff
108 .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'
109 .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'
110 .    \" for low resolution devices (crt and lpr)
111 .if \n(.H>23 .if \n(.V>19 \
112 \{\
113 .    ds : e
114 .    ds 8 ss
115 .    ds o a
116 .    ds d- d\h'-1'\(ga
117 .    ds D- D\h'-1'\(hy
118 .    ds th \o'bp'
119 .    ds Th \o'LP'
120 .    ds ae ae
121 .    ds Ae AE
122 .\}
123 .rm #[ #] #H #V #F C
124 .\" ========================================================================
125 .\"
126 .IX Title "Tie::RefHash::Weak 3"
127 .TH Tie::RefHash::Weak 3 "2008-10-18" "perl v5.8.8" "User Contributed Perl Documentation"
128 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
129 .\" way too many mistakes in technical documents.
130 .if n .ad l
131 .nh
132 .SH "NAME"
133 Tie::RefHash::Weak \- A Tie::RefHash subclass with weakened references in the keys.
134 .SH "SYNOPSIS"
135 .IX Header "SYNOPSIS"
136 .Vb 2
137 \&        use Tie::RefHash::Weak;
138 \&        tie my %h, \*(AqTie::RefHash::Weak\*(Aq;
139 \&
140 \&        # OR:
141 \&
142 \&        use Tie::RefHash::Weak \*(Aqfieldhash\*(Aq;
143 \&        fieldhash my %h;
144 \&
145 \&        { # new scope
146 \&                my $val = "foo";
147 \&
148 \&                $h{\e$val} = "bar"; # key is weak ref
149 \&        
150 \&                print join(", ", keys %h); # contains \e$val, returns regular reference
151 \&        }
152 \&        # $val goes out of scope, refcount goes to zero
153 \&        # weak references to \e$val are now undefined
154 \&
155 \&        keys %h; # no longer contains \e$val
156 \&
157 \&        # see also Tie::RefHash
158 .Ve
159 .SH "DESCRIPTION"
160 .IX Header "DESCRIPTION"
161 The Tie::RefHash module can be used to access hashes by reference. This is
162 useful when you index by object, for example.
163 .PP
164 The problem with Tie::RefHash, and cross indexing, is that sometimes the
165 index should not contain strong references to the objecs. Tie::RefHash's
166 internal structures contain strong references to the key, and provide no
167 convenient means to make those references weak.
168 .PP
169 This subclass of Tie::RefHash has weak keys, instead of strong ones. The
170 values are left unaltered, and you'll have to make sure there are no strong
171 references there yourself.
172 .SH "FUNCTIONS"
173 .IX Header "FUNCTIONS"
174 For compatibility with Hash::Util::FieldHash, this module will, upon
175 request, export the following two functions. You may also write
176 \&\f(CW\*(C`use Tie::RefHash::Weak \*(Aq:all\*(Aq\*(C'\fR.
177 .ie n .IP "fieldhash %hash" 4
178 .el .IP "fieldhash \f(CW%hash\fR" 4
179 .IX Item "fieldhash %hash"
180 This ties the hash and returns a reference to it.
181 .IP "fieldhashes \e%hash1, \e%hash2 ..." 4
182 .IX Item "fieldhashes %hash1, %hash2 ..."
183 This ties each hash that is passed to it as a reference. It returns the
184 list of references in list context, or the number of hashes in scalar
185 context.
186 .SH "THREAD SAFETY"
187 .IX Header "THREAD SAFETY"
188 Tie::RefHash version 1.32 and above have correct handling of threads (with
189 respect to changing reference addresses). If your module requires
190 Tie::RefHash::Weak to be thread aware you need to depend on both
191 Tie::RefHash::Weak and Tie::RefHash version 1.32 (or later).
192 .PP
193 Version 0.02 and later of Tie::RefHash::Weak depend on a thread-safe version of
194 Tie::RefHash anyway, so if you are using the latest version this should already
195 be taken care of for you.
196 .SH "5.10.0 COMPATIBILITY"
197 .IX Header "5.10.0 COMPATIBILITY"
198 Due to a minor change in Perl 5.10.0 a bug in the handling of magic freeing was
199 uncovered causing segmentation faults.
200 .PP
201 This has been patched but not released yet, as of 0.08.
202 .SH "CAVEAT"
203 .IX Header "CAVEAT"
204 You can use an \s-1LVALUE\s0 reference (such as \f(CW\*(C`\esubstr ...\*(C'\fR) as a hash key, but
205 due to a bug in perl (see
206 <http://rt.perl.org/rt3/Public/Bug/Display.html?id=46943>) it might not be 
207 possible to weaken a reference to it, in which case the hash element will 
208 never be deleted automatically.
209 .SH "AUTHORS"
210 .IX Header "AUTHORS"
211 Yuval Kogman <nothingmuch@woobling.org>
212 .PP
213 some maintenance by Hans Dieter Pearcey <hdp@pobox.com>
214 .SH "COPYRIGHT & LICENSE"
215 .IX Header "COPYRIGHT & LICENSE"
216 .Vb 3
217 \&        Copyright (c) 2004 Yuval Kogman. All rights reserved
218 \&        This program is free software; you can redistribute
219 \&        it and/or modify it under the same terms as Perl itself.
220 .Ve
221 .SH "SEE ALSO"
222 .IX Header "SEE ALSO"
223 Tie::RefHash, Class::DBI (the live object cache),
224 \&\*(L"Perl_magic_killbackrefs\*(R" in mg.c