perl - 在 Perl 中,如何检查给定函数是从哪个模块导入的?

标签 perl function module subroutine

我有一个调用函数的代码。但是我不知道这个函数属于哪个模块。我需要它来修改这个功能。

如何检查?

最佳答案

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 在许多其他情况下也很方便,所以我首先提到了这一点。

关于perl - 在 Perl 中,如何检查给定函数是从哪个模块导入的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4881315/

相关文章:

perl - 我可以为Perl中的所有信号设置一个信号处理程序吗?

python - 为什么以下简单的并行化代码比 Python 中的简单循环慢得多?

c - 尝试从另一个包含结构的函数调用一个函数

c++ - 为什么 C 数组在传递给函数时具有错误的 sizeof() 值?

go - 导入本地模块

regex - 什么是用于查找字符串中第一个非连续重复字符的 Perl 正则表达式?

perl - 如何检查 perl OO 代码中未定义的键?

Java 如何在模块中创建自定义名称的数组,可以做到吗?

php - 如何从 3 个表中获取数据?功能

regex - 将分组元素存储在 perl 中的两个不同数组中?