如何在Perl中列出给定对象或程序包上的可用方法?

问题描述 投票:40回答:4

如何在Perl中列出给定对象或程序包上的可用方法?

perl introspection
4个回答
21
投票

如果您有一个名为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';

38
投票

在Perl中有很多方法可以这样做,因为在Perl中有很多方法可以做到这一点。正如有人评论的那样,自动加载方法总是有些棘手。但是,与其建议您自己使用,不建议您看一下CPAN上的Class::Inspector。这样您就可以执行以下操作:


12
投票

如果您有一个使用Moose的程序包,它相当简单:


3
投票

通常,您无法使用像Perl这样的动态语言来做到这一点。该程序包可能定义了一些您可以找到的方法,但是它也可以动态组成在使用前没有定义的方法。此外,即使调用(有效的)方法也可能无法定义该方法。这就是使动态语言变得不错的事情。 :)

您要解决什么任务?

© www.soinside.com 2019 - 2024. All rights reserved.