вызывается родительский метод пакета, в случае если мы имя пакета не передаем в сам метод? Я пока вижу так, но это не красиво:
package Parent;
sub qwe { my ($args) = @_; print "Parent::qwe\n"; }
package Child;
use base 'Parent';
sub qwe {
my ($args) = @_;
if (my $parent = __PACKAGE__->next::can) {
$parent->(@_);
}
print "Child::qwe\n";
}
Только ручной работой с @ISA , насколько я понял вопрос. Во всяком случае, в проекте, в котором зачем-то (истерически) реализовали ручной диспатчинг методов мне пришлось делать так.
Нет. Выше код, который это делает автоматом. Тут проблема в том что когда ты делаешь $self->SUPER::<sub> _всегда_ первым аргументом идет $self. А тут этого не надо.
Что-то не понял, что нужно тогда
Чтобы не надо было писать этот уродский if...
А как ещё, без if-то?
UNIVERSAL::can не то?
И на что вы это натравите? Выше, кстати, был пример с can.
На элементы @ISA и нужный метод. Но в любом случае для нормальной работы/обработки ошибки там if как у вас должен быть...
Ну у вас еще и цикл появляется... о чем я и писал выше. Вот хотелось-бы это все внутрь XS'ов и одним методом
Обсуждают сегодня