ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Devel-FindRef/FindRef.pm
(Generate patch)

Comparing Devel-FindRef/FindRef.pm (file contents):
Revision 1.13 by root, Fri Jul 11 22:18:10 2008 UTC vs.
Revision 1.14 by root, Sat Jul 19 01:17:12 2008 UTC

119 my (@about) = find $$refref; 119 my (@about) = find $$refref;
120 if (@about) { 120 if (@about) {
121 for my $about (@about) { 121 for my $about (@about) {
122 $buf .= "$indent" . (@about > 1 ? "+- " : " ") . $about->[0]; 122 $buf .= "$indent" . (@about > 1 ? "+- " : " ") . $about->[0];
123 if (@$about > 1) { 123 if (@$about > 1) {
124 if ($seen{$about->[1]+0}++) { 124 if ($seen{ref2ptr $about->[1]}++) {
125 $buf .= " $about->[1], which was seen before.\n"; 125 $buf .= " $about->[1], which was seen before.\n";
126 } else { 126 } else {
127 $buf .= " $about->[1], which is\n"; 127 $buf .= " $about->[1], which is\n";
128 $track->(\$about->[1], $depth - 1, $about == $about[-1] ? "$indent " : "$indent| "); 128 $track->(\$about->[1], $depth - 1, $about == $about[-1] ? "$indent " : "$indent| ");
129 } 129 }
157=cut 157=cut
158 158
159sub find($) { 159sub find($) {
160 my ($about, $excl) = &find_; 160 my ($about, $excl) = &find_;
161 my %excl = map +($_ => undef), @$excl; 161 my %excl = map +($_ => undef), @$excl;
162 grep !exists $excl{$_->[1] + 0}, @$about 162 grep !exists $excl{ref2ptr $_->[1]}, @$about
163} 163}
164 164
165=item $ref = Devel::FindRef::ptr2ref $integer 165=item $ref = Devel::FindRef::ptr2ref $integer
166 166
167Sometimes you know (from debugging output) the address of a perl scalar 167Sometimes you know (from debugging output) the address of a perl scalar
170call on valid addresses, but extremely dangerous to call on invalid ones. 170call on valid addresses, but extremely dangerous to call on invalid ones.
171 171
172 # we know that HASH(0x176ff70) exists, so turn it into a hashref: 172 # we know that HASH(0x176ff70) exists, so turn it into a hashref:
173 my $ref_to_hash = Devel::FindRef::ptr2ref 0x176ff70; 173 my $ref_to_hash = Devel::FindRef::ptr2ref 0x176ff70;
174 174
175=item $ref = Devel::FindRef::ref2ptr $reference
176
177The opposite of C<ptr2ref>, above: returns the internal address of the
178value pointed to by the passed reference. I<No checks whatsoever will be
179done>, so don't use this.
180
175=back 181=back
176 182
177=head1 ENVIRONMENT VARIABLES 183=head1 ENVIRONMENT VARIABLES
178 184
179You can set the environment variable C<PERL_DEVEL_FINDREF_DEPTH> to an 185You can set the environment variable C<PERL_DEVEL_FINDREF_DEPTH> to an

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines