Как мне наследовать функции в объекте и разрешить их использование из данного объекта? - PullRequest
1 голос
/ 19 сентября 2011

У меня проблемы с формулировкой этого вопроса, но как я могу сделать что-то вроде этого:

FileSpecClone.pm
package FileSpecClone;
use File::Spec::Unix;

sub new() {
bless {};
}

CloneScript.pl
use FileSpecClone;
$obj = FileSpecClone->new();
# A FileSpec::Unix subroutine
$obj->catpath('a','b','c');

1 Ответ

3 голосов
/ 19 сентября 2011

Вы должны указать, что FileSpecClone должен наследовать методы File::Spec::Unix, установив переменную пакета @ISA.

package FileSpecClone;
use File::Spec::Unix;
<b>our @ISA = qw(File::Spec::Unix);</b>
...

Это задокументировано в perlobj.

Если у вас есть модуль parent (основной модуль начиная с v5.10), он будет обрабатывать детали настройки @ISA во время компиляции. (HT: daxim)

use parent 'File::Spec::Unix';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...