【发布时间】:2014-05-13 15:09:25
【问题描述】:
我正在处理一个明显简单的问题。
我正在编写一个类似于UML::Class::Simple 的模块,但有一些改进。总而言之,这个想法是为给定源中的每个模块检索一张记录卡,其中包含有关方法、属性、依赖项和子项的信息。我当前的问题是获取每个模块的方法和属性。让我们看看我已经写的代码:
use Class::Inspector;
use Data::Dumper;
sub _load_methods{
my $pkg = shift;
my $methods = Class::Inspector->methods( $pkg, 'expanded' );
print Dumper $methods;
return 1;
}
为给定的包调用这个函数,我得到的方法比我预期的要多。原因是Class::Inspector 返回所有继承的方法以及如果模块是 Moose::Object 的访问器。我想过滤所有这些方法以仅获取给定包中定义的方法,而不是其父包中定义的方法。
谁能提供一种优雅的方式来按照我建议的方式过滤方法列表?
提前致谢。
【问题讨论】:
-
虽然这不是一个完整的答案,但看看 Data::Printer 是如何处理它的。
-
我刚刚试了一下,它看起来非常漂亮和实用。感谢 Oesor,我的资源中添加了一个新的 perl 模块。