Почему обработчики атрибутов Perl не получают вызывается из других пакетов?

У меня возникает странная проблема с Attribute :: Handlers, которая выглядит как какая-то ошибка:

package MyPackage;

use Attribute::Handlers;

sub UNIVERSAL::foo :ATTR(CODE) {
  ...
}

При использовании в MyPackage или из основного пакета сценария, использующего MyPackage обработчик foo вызывается всякий раз, когда компилятор встречает функцию вида

sub bar:foo {
 ...
}

. Однако у меня есть другой пакет, в отдельном файле .pm, который использует MyPackage. Компилятор принимает атрибут ": foo", но обработчик не вызывается.

Я попытался написать функцию импорта в MyPackage, которая экспортирует обработчик foo в пространство имен вызывающего, но это не похоже чтобы помочь.

Кто-нибудь может понять это? Последние несколько дней я ломал голову над тем, как это исправить.

5
задан Rob 21 June 2011 в 21:15
поделиться