在Perl中,標量爲$ myScalar的包名稱爲「My :: Package」爲什麼要確定My :: Package是否有父級稱爲「My :: Package :: Parent」?這裏的限制是My :: Package可能尚未加載,我們不知道類構造函數所需的參數。Perl繼承
感謝
在Perl中,標量爲$ myScalar的包名稱爲「My :: Package」爲什麼要確定My :: Package是否有父級稱爲「My :: Package :: Parent」?這裏的限制是My :: Package可能尚未加載,我們不知道類構造函數所需的參數。Perl繼承
感謝
那麼,直到類存在時,您才能知道類的父類是什麼,因此您需要加載定義它的模塊。然後,您可以使用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')) {
...
}
參考:
我想你會想isa()
,也許直接探索@ISA
,但檢查出man perlobj
DOES()
和can()
了。
直到我::包被加載(例如,通過'use'),它*沒有任何父母* 。 – derobert 2012-01-09 22:23:11