Devel-FindRef
view release on metacpan or search on metacpan
}
}
if (CvCONST (sv) && (SV*)CvXSUBANY (sv).any_ptr == targ)
res_pair ("the constant value of");
if (!CvWEAKOUTSIDE (sv) && (SV*)CvOUTSIDE (sv) == targ)
res_pair ("the containing scope for");
if (sv == targ && CvANON (sv))
if (CvSTART (sv)
&& CvSTART (sv)->op_type == OP_NEXTSTATE
&& CopLINE ((COP *)CvSTART (sv)))
res_text (form ("the closure created at %s:%d",
CopFILE ((COP *)CvSTART (sv)) ? CopFILE ((COP *)CvSTART (sv)) : "<unknown>",
CopLINE ((COP *)CvSTART (sv))));
else
res_text (form ("the closure created somewhere in file %s (PLEASE REPORT!)",
CvFILE (sv) ? CvFILE (sv) : "<unknown>"));
}
break;
case SVt_PVGV:
if (GvGP (sv))
{
if (GvSV (sv) == (SV *)targ) res_gv ('$');
if (GvAV (sv) == (AV *)targ) res_gv ('@');
if (GvHV (sv) == (HV *)targ) res_gv ('%');
if (GvCV (sv) == (CV *)targ) res_gv ('&');
}
break;
case SVt_PVLV:
if (LvTARG (sv) == targ)
{
if (LvTYPE (sv) == 'y')
{
MAGIC *mg = mg_find (sv, PERL_MAGIC_defelem);
if (mg && mg->mg_obj)
res_pair (form ("the target for the lvalue hash element '%.*s',",
(int)SvCUR (mg->mg_obj), SvPV_nolen (mg->mg_obj)));
else
res_pair (form ("the target for the lvalue array element #%d,", LvTARGOFF (sv)));
}
else
res_pair (form ("an lvalue reference target (type '%c', ofs %d, len %d),",
LvTYPE (sv), LvTARGOFF (sv), LvTARGLEN (sv)));
}
break;
}
if (rmagical)
SvRMAGICAL_on (sv);
}
}
/* look at the mortalise stack of the current coroutine */
for (i = 0; i <= PL_tmps_ix; ++i)
if (PL_tmps_stack [i] == targ)
res_text ("a temporary on the stack");
if (targ == (SV*)PL_main_cv)
res_text ("the main body of the program");
}
EXTEND (SP, 2);
PUSHs (sv_2mortal (newRV_noinc ((SV *)about)));
PUSHs (sv_2mortal (newRV_noinc ((SV *)excl)));
}
SV *
ptr2ref (UV ptr)
CODE:
RETVAL = newRV_inc (INT2PTR (SV *, ptr));
OUTPUT:
RETVAL
UV
ref2ptr (SV *rv)
CODE:
if (!SvROK (rv))
croak ("argument to Devel::FindRef::ref2ptr must be a reference");
RETVAL = PTR2UV (SvRV (rv));
OUTPUT:
RETVAL
U32
_refcnt (SV *rv)
CODE:
if (!SvROK (rv))
croak ("argument to Devel::FindRef::_refcnt must be a reference");
RETVAL = SvREFCNT (SvRV (rv));
OUTPUT:
RETVAL
( run in 0.601 second using v1.01-cache-2.11-cpan-0bb4e1dffa6 )