Я подозреваю, что вы не передаете код, который вы на самом деле используете, так как я не получаю описанную вами ошибку, но я получаю множество других ошибок.
Ошибки, которые яЯ получаю все путаницы по поводу связи между путями модулей и именами пакетов.Поскольку файлы вашего модуля находятся в каталоге с именем «Person», они должны называться «Person :: Person» и «Person :: PersonInit».Кажется, вы понимаете, что когда вы загружаете модули (use Person::Person
), но не когда называете пакеты (package Person
) или вызываете методы класса (Person->new(...)
).
После того, как я отредактировалваши файлы постоянно используют правильные имена для пакетов, все работает как положено.
Я отмечу, что вы определяете как @EXPORT
, так и @EXPORT_OK
.Ваша экспортированная подпрограмма должна быть только в одном из них.
Я использую Perl 5.26.1.Судя по тэгам на ваш вопрос, кажется, что вы используете 5.8. (Думаю, это будет 5.8.8).Возможно, вы столкнулись с ошибкой, которая была исправлена за тринадцать лет с момента выпуска этой версии, но, честно говоря, я не припоминаю слышать о чем-либо подобном.В любом случае, я призываю вас перейти на более новую версию Perl.