Perl对象层次结构内省

sno*_*kin 1 oop perl package

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

A--> B --> C --> D
Run Code Online (Sandbox Code Playgroud)

这意味着什么A是基类,并B从它C继承而继承自B等等.

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

my $co = D->new();
Run Code Online (Sandbox Code Playgroud)

有没有办法检查(一些UNIVERSAL方法?)如果对象co是一个后代A?(或者一般来说,测试一个对象X是否是包的后代P)

jmc*_*ney 5

UNIVERSAL.

if ($D->isa('A')) {print "do something fancy"}
Run Code Online (Sandbox Code Playgroud)

要么

if ($D->can('method_defined_in_A')) {print "can do that";}
Run Code Online (Sandbox Code Playgroud)