如何在Perl中列出给定对象或程序包上的可用方法?
如果您有一个名为Foo
的软件包,则应这样做:
no strict 'refs';
for(keys %Foo::) { # All the symbols in Foo's symbol table
print "$_\n" if exists &{"Foo::$_"}; # check if symbol is method
}
use strict 'refs';
在Perl中有很多方法可以这样做,因为在Perl中有很多方法可以做到这一点。正如有人评论的那样,自动加载方法总是有些棘手。但是,与其建议您自己使用,不建议您看一下CPAN上的Class::Inspector。这样您就可以执行以下操作:
如果您有一个使用Moose的程序包,它相当简单:
通常,您无法使用像Perl这样的动态语言来做到这一点。该程序包可能定义了一些您可以找到的方法,但是它也可以动态组成在使用前没有定义的方法。此外,即使调用(有效的)方法也可能无法定义该方法。这就是使动态语言变得不错的事情。 :)
您要解决什么任务?