解决方法
Devel::Peek
模块非常方便地获取有关变量的各种信息。您可以使用它的一个事情是转储对子例程的引用,并获取其来自的glob的名称:
$ perl -MDevel::Peek -MList::Util=first -e'Dump(\&first)' SV = IV(0x1094e20) at 0x1094e28 REFCNT = 1 FLAGS = (TEMP,ROK) RV = 0x11183b0 SV = PVCV(0x10ff1f0) at 0x11183b0 REFCNT = 3 FLAGS = (POK,pPOK) PROTOTYPE = "&@" COMP_STASH = 0x0 XSUB = 0x7f7ecbdc61b0 XSUBANY = 0 GVGV::GV = 0x11183c8 "List::Util" :: "first" FILE = "ListUtil.c" DEPTH = 0 FLAGS = 0x800 OUTSIDE_SEQ = 0 PADLIST = 0x0 OUTSIDE = 0x0 (null)
GVGV :: GV部分在这里是重要的一点。
一个替代解决方案是Sub :: Identify,它真的只给你提供给你的代码引用的名字。然而,知道Devel :: Peek在许多其他情况下也很方便,所以我首先提到。