in reply to Getting the name of the subroutine called. There is a way for a clone references?!

My guess is that caller simply needs improving
use Devel::Peek; package DO; sub A{warn@_}; *DO=\&A; Devel::Peek::Dump(\%DO::); __END__ SV = RV(0x1c1d05c) at 0x1abf0cc REFCNT = 1 FLAGS = (TEMP,ROK) RV = 0x1ab24cc SV = PVHV(0x1aadf70) at 0x1ab24cc REFCNT = 4 FLAGS = (SHAREKEYS) IV = 2 NV = 0 ARRAY = 0x1abb4f0 (0:7, 2:1) hash quality = 75.0% KEYS = 2 FILL = 1 MAX = 7 RITER = -1 EITER = 0x0 NAME = "DO" Elt "DO" HASH = 0x95b SV = PVGV(0x1aaf3bc) at 0x1abf180 REFCNT = 2 FLAGS = (GMG,SMG,MULTI,ASSUMECV,IN_PAD) IV = 0 NV = 0 MAGIC = 0x1ab0c70 MG_VIRTUAL = &PL_vtbl_glob MG_TYPE = '*' MG_OBJ = 0x1abf180 NAME = "DO" NAMELEN = 2 GvSTASH = 0x1ab24cc "DO" GP = 0x1aaf384 SV = 0x1c1d748 REFCNT = 1 IO = 0x0 FORM = 0x0 AV = 0x0 HV = 0x0 CV = 0x1ab252c CVGEN = 0x0 GPFLAGS = 0x0 LINE = 1 FILE = "-e" FLAGS = 0xe EGV = 0x1abf180 "DO" Elt "A" HASH = 0x43 SV = PVGV(0x1abb49c) at 0x1c1d79c REFCNT = 2 FLAGS = (GMG,SMG,MULTI,IN_PAD) IV = 0 NV = 0 MAGIC = 0x1abb444 MG_VIRTUAL = &PL_vtbl_glob MG_TYPE = '*' MG_OBJ = 0x1c1d79c NAME = "A" NAMELEN = 1 GvSTASH = 0x1ab24cc "DO" GP = 0x1abb464 SV = 0x1c1d6f4 REFCNT = 1 IO = 0x0 FORM = 0x0 AV = 0x0 HV = 0x0 CV = 0x1ab252c CVGEN = 0x0 GPFLAGS = 0x0 LINE = 1 FILE = "-e" FLAGS = 0xa EGV = 0x1c1d79c "A"
You can see the CV is identical (0x1ab252c), but EGV is not (EGV = 0x1abf180 "DO" versus EGV = 0x1c1d79c "A"). Soo, wherever pp_caller gets $subroutine from is the wrong spot.

PS - I am not a perl5-porter, so these are guesses.

  • Comment on Re: Getting the name of the subroutine called. There is a way for a clone references?!
  • Download Code