Редактировать (для потомков): Еще одна причина, по которой это происходит, и, возможно, самая распространенная причина, это круговая зависимость между модулями, которые вы используете.
Найдите в Rebat/Store.pm
подсказки. Ваш журнал говорит, что попытка перезагрузить была прервана. Может быть, Rebat
уже импортирует Rebat::Store
, а Rebat::Store
имеет некоторую проверку области пакета на предмет двойной загрузки.
Этот код демонстрирует тип ситуации, которую я имею в виду:
# m1.pl:
use M1;
use M1::M2;
M1::M2::x();
# M1.pm
package M1;
use M1::M2;
1;
# M1/M2.pm
package M1::M2;
our $imported = 0;
sub import {
die "Attempt to reload M1::M2 aborted.\n" if $imported++;
}
sub x { print "42\n" }
1;
$ perl m1.pl
Attempt to reload M1::M2 aborted.
BEGIN failed--compilation aborted at m1.pl line 3.
Код скомпилируется (и напечатает 42), если вы просто удалите строку use M1::M2
в m1.pl
. В вашем случае вам может не потребоваться явно указывать use Rebat::Store
в вашей программе.