gpt4 book ai didi

perl - 无法在 perl 代码库中找到函数定义

转载 作者:行者123 更新时间:2023-12-04 22:00:12 25 4
gpt4 key购买 nike

我正在翻阅 7900 多行 perl 代码。我需要改变一些东西,即使我只学习了 36 个小时的 perl,事情也进展得很顺利。我学习了该语言的基本结构,并且能够完成一些小事。但是突然间我发现了一个在任何地方都没有任何定义的函数调用。我多次使用 grep 来检查所有“子”。我找不到函数定义。我错过了什么?这个函数的定义在哪里。我很确定这是一个用户定义的函数而不是一个库函数(从它的名字我猜到了这个)。
请帮我找到这个函数的定义。

以下是围绕函数用法的几行。

(cfg_machine_isActive($ep)) {
staf_var_set($ep, VAR_PHASE, PHASE_PREP);
staf_var_set($ep, VAR_PREP, STATE_RUNNING);
} else {
cfg_machine_set_state($ep, STATE_FAILED);
}
}
$rc = rvt_deploy_library(); #this is the function that is the problem
dump_states() unless ($rc != 0);

答案在这里:

(我不能发布这个答案本身,因为我没有足够的声誉)

我发现在 perl 中找到导入函数定义的最快方法是以下命令:
>perl.exe -d <filename>.pl

这将启动调试器。
然后;做
b <name of the function/subroutine who's definition you are looking for>

在我们的例子中,这意味着输入:
b rvt_deploy_library

接下来按“c”跳转到提到的函数/子程序。

这将调试器带到所需的功能。现在,您可以看到行号。以及功能/子程序在控制台上的位置。
main::rvt_deploy_library(D:/CAT/rvt/lib/rvt.pm:60): 

最佳答案

在 Perl 中有多种方法可以声明方法。这是一个几乎可以肯定的不完整列表:

  • 标准方式,例如。 sub NAME { ... }
  • 使用 MooseX::Method::Signatures,method NAME (...) {...}
  • 分配给 typeglob,例如。 *NAME = sub {...};

  • 此外,如果包声明了 AUTOLOAD函数,那么可能没有明确的方法定义。见 perlsub想要查询更多的信息。

    关于perl - 无法在 perl 代码库中找到函数定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8077976/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com