Если создать класс, унаследованный от двух других, то будет не слишком очевидно, от какого класса окажется унаследованным метод import.
Простой пример. Имеется два модуля BaseA и BaseB, содержащие только метод import.
package BaseA;
sub import {
print "Base A\n";
}
1;
package BaseB;
sub import {
print "Base B\n";
}
1;
Модуль Derived содержит лишь инструкции, указывающие эти два класса как базовые:
package Derived;
use base BaseA;
use base BaseB;
1;
Что произойдет, если в программе используется модуль Derived, и вызван метод import?
use Derived;
Derived->import();
На печать дважды выводится строка Base A (первый раз при подключении, второй — при явном вызове import).
А вот если поменять порядок наследования внутри Derived:
package Derived;
use base BaseB;
use base BaseA;
1;
то на печать дважды выводится Base B.
Комментировать