Черт возьми, Perl не может благословить мой объект
Вопрос
Кроме того, я пытаюсь реализовать метод import
в моем классе Perl для создания экземпляра объекта Data
, который по сути представляет собой прославленный массив хэш-ссылок, из правильного массива хэш-ссылок.
Вот пример того, как я планирую его использовать:
родовое словоМоя реализация сгенерированного кода кода выглядит следующим образом:
родовое слово Удивительно то, что Perl сообщает об ошибке во время компиляции (обратите внимание на блок import
):
BEGIN
не внесло особой ясности в то, что происходит:
Не могу благословить нереференсное значение
perldiag
Только жесткие ссылки могут быть благословлены. Вот как Perl «навязывает»
инкапсуляция объектов. Видеть
(F)
.
Я даже попытался инициализировать объект и добавить данные в два отдельных шага:
родовое словоЭто привело к следующей ошибке времени компиляции:
родовое словоДва вопроса:
- Что не так в том, что я сделал?
- Не мог бы кто-нибудь пояснить объяснение этой ошибки времени компиляции в коде
perlobj
?
Решение
import () - опасное название для метода, поскольку Perl иногда вызывает для вас метод, называемый 'import'.Фактически, заявление:
родовое словодействительно означает:
родовое словочто происходит во время "компиляции".
Таким образом, вероятно, что ваш метод import () вызывается Perl как часть механизма загрузки класса, прежде чем вы получите возможность его использовать.Вам следует переименовать свой метод import () во что-нибудь другое (например, import_data), и все будет в порядке.