我在我的基类use Storable qw/nfreeze thaw/;
中,但我无法在我的子课程中访问nfreeze
。我在像nfreeze($data)
这样的子类中调用它。
感谢。
答案 0 :(得分:4)
Storable::nfreeze
和Storable::thaw
是函数而非方法 - 他们不希望特定类型的对象或包名称为他们的第一个论点通常,您直接调用这些子例程(nfreeze($data)
)而不是间接语法($obj->thaw()
),因此您不应期望它们位于继承方法集中。
要在子类中使用这些函数,请将它们导入子包
package ChildClass;
use Storable qw/nfreeze thaw/;
或使用其完全限定的子程序名称调用函数:
Storable::nfreeze($data);
BaseClass::thaw($data);
第二次调用有效,因为nfreeze
/ thaw
已经导入BaseClass
命名空间。