2012-01-09 74 views
1

在Perl中,標量爲$ myScalar的包名稱爲「My :: Package」爲什麼要確定My :: Package是否有父級稱爲「My :: Package :: Parent」?這裏的限制是My :: Package可能尚未加載,我們不知道類構造函數所需的參數。Perl繼承

感謝

+1

直到我::包被加載(例如,通過'use'),它*沒有任何父母* 。 – derobert 2012-01-09 22:23:11

回答

1

那麼,直到類存在時,您才能知道類的父類是什麼,因此您需要加載定義它的模塊。然後,您可以使用UNIVERSAL方法isa來查找它是否繼承自My::Package::Parent

my $class = 'My::Package'; 

my $file = $class; # Or: 
$file =~ s{::}{/}g; # eval "require $class;" or die [email protected]; 
$file .= '.pm';  # 
require $file;  # 

if ($class->isa('My::Package::Parent')) { 
    ... 
} 

參考:

3

我想你會想isa(),也許直接探索@ISA,但檢查出man perlobjDOES()can()了。