Then I ran it using Devel::FindRef:#!/usr/bin/perl -slw use strict; use warnings; use B; use Clone::Fast; use Object::Destroyer; my $ref = {}; print B::svref_2object($ref)->REFCNT; my $copy = Clone::Fast::clone($ref); print B::svref_2object($ref)->REFCNT; my $sentry = Object::Destroyer->new(sub { undef $copy }); print B::svref_2object($ref)->REFCNT;
#!/usr/bin/perl use strict; use B; use Clone::Fast; use Devel::FindRef; use Scalar::Util; use Object::Destroyer; our $ref = {}; my $global_my = \$ref; our(%global_hash) = (ukukey => \$ref); our(%global_hashref) = {ukukey2 => \$ref}; sub testsub { my $testsub_local = my $global_hashref; print Devel::FindRef::track(\$ref); } my $closure = sub { my $closure_var = \$_[0]; Scalar::Util::weaken (my $weak_ref = \$ref); testsub; }; sub my_ref { my $ref = {}; print B::svref_2object($ref)->REFCNT; my $copy = Clone::Fast::clone($ref); print B::svref_2object($ref)->REFCNT; my $sentry = Object::Destroyer->new(sub {undef $copy}); print B::svref_2object($ref)->REFCNT; testsub; } $closure->($ref);
In reply to Re^5: Intercept any changes to the sv_refcnt/SvREFCNT of an object
by Khen1950fx
in thread Intercept any changes to the sv_refcnt/SvREFCNT of an object
by vernonlyon
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |