Perl:确定函数的定义位置

时间:2011-01-15 17:09:48

标签: perl oop methods parent-child

  

可能重复:
  In Perl, how can I check from which module a given function was imported?

你好! 我正在利用周末时间梳理我们的网络应用程序,以便更好地了解它。它使用了许多模块,其功能被拉入其中,我的问题是这样的......如何确定函数源自的模块?
我问的原因是因为我在这里和那里使用印刷STDERR线来理解数据移动的方式(它已经揭开了大大的神秘面纱)..这是一个例子......

 ($file_data,$count) = lookup_files($customer,$site,'','0',$d);

我不确定的是lookup_files()的来源。我想看到的是......

 ($file_data,$count) = lookup_files($customer,$site,'','0',$d);
 print STDERR "lookup_files originates here " . <CODE TO SHOW ME WHERE lookup_files IS DEFINED>;

非常感谢任何有关从哪里开始的建议。 webapp使用大量的使用模块,而不是有选择地仅导入所需的内容,每次使用似乎都带来了所有功能 我知道在引用“方法”,“父母”等关于Perl时,我的术语可能不正确。如果有人想在我身上纠正我也会受到赞赏。我充其量只是这个东西的初学者。珍妮

2 个答案:

答案 0 :(得分:5)

看看核心模块Devel :: Peek

http://perldoc.perl.org/Devel/Peek.html#A-reference-to-a-subroutine

该模块函数的输出将告诉您子程序的来源

答案 1 :(得分:2)

一种相当简单的方法是加载Carp::Always。如果它是一个Web应用程序,您需要将其放入代码中。对于命令行,您只需perl -MCarp::Always ...