我正在处理一个明显的简单问题.
我正在编写一个类似于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,则返回访问器.我想过滤所有这些方法,以获得在给定包中定义的方法,而不是在其父类中.
任何人都可以提供一种优雅的方式来按我建议的方式过滤方法列表吗?
提前致谢.