我有这个Perl代码:
use HTTP::Daemon;
use Data::Printer;
my $d = HTTP::Daemon->new(
LocalHost => "localhost",
LocalPort => 8080
) || die;
while (my $c = $d->accept) {
print ref $c;
print $c;
print %{*$c};
p $c;
print $c->sockhost . "\n"
}
返回的对象$ c是“HTTP :: Daemon :: ClientConn = GLOB(0x85543d8)”。 原始代码表明,有一个 sockhost 成员,但我想知道它可能有哪些其他成员?我的印刷工作都没有帮助。即使是meta::CPAN页面也是静默的,但我想在代码中使用一般解决方案来揭示 $ c 是什么。作为参考,我有Perl v5.12.4。
答案 0 :(得分:2)
HTTP :: Daemon记录了它支持的方法http://search.cpan.org/~gaas/HTTP-Daemon-6.01/lib/HTTP/Daemon.pm。它还通过继承支持所有IO :: Socket :: INET方法。
然而,关于如何一般地检查Perl类暴露答案的方法的更一般的问题是你不能。在Perl中,可以在运行时动态生成方法,因此没有工具可以检查对象并告诉您支持哪些方法。
答案 1 :(得分:1)
Data::Printer
比Data::Dumper
更有用。它显示了对象的内部结构,包括所有方法。您需要从CPAN安装它。
use Data::Printer; # or just "use DDP;" for short
my $obj = SomeClass->new;
p($obj);
这可能会给你类似的东西:
\ SomeClass {
Parents Moose::Object
Linear @ISA SomeClass, Moose::Object
public methods (3) : bar, foo, meta
private methods (0)
internals: {
_something => 42,
}
}