Perl对象层次结构内省

时间:2012-06-15 16:54:45

标签: perl oop package

假设我有以下包层次结构:

A--> B --> C --> D

这意味着A是基类,B依次继承C my $co = D->new(); 继承自B等等。

另外,假设我有以下代码行:

UNIVERSAL

有没有办法检查(某些co方法?)如果对象AX的后代? (或者一般来说,测试对象P是否是包{{1}}的后代)

2 个答案:

答案 0 :(得分:5)

请参阅UNIVERSAL

if ($D->isa('A')) {print "do something fancy"}

if ($D->can('method_defined_in_A')) {print "can do that";}

答案 1 :(得分:0)

我相信你可以使用

$co->isa($package_name);

它是一个所有perl祝福引用的UNIVERSAL方法。 http://perldoc.perl.org/UNIVERSAL.html