Черт возьми, Perl не может благословить мой объект

StackOverflow https://stackoverflow.com/questions/7377424

  •  28-10-2019
  •  | 
  •  

Вопрос

Кроме того, я пытаюсь реализовать метод import в моем классе Perl для создания экземпляра объекта Data, который по сути представляет собой прославленный массив хэш-ссылок, из правильного массива хэш-ссылок.

Вот пример того, как я планирую его использовать:

родовое слово

Моя реализация сгенерированного кода кода выглядит следующим образом:

родовое слово

Удивительно то, что Perl сообщает об ошибке во время компиляции (обратите внимание на блок import):

родовое слово

BEGIN не внесло особой ясности в то, что происходит:

<цитата>

Не могу благословить нереференсное значение

perldiag Только жесткие ссылки могут быть благословлены. Вот как Perl «навязывает» инкапсуляция объектов. Видеть (F) .


Я даже попытался инициализировать объект и добавить данные в два отдельных шага:

родовое слово

Это привело к следующей ошибке времени компиляции:

родовое слово

Два вопроса:

  1. Что не так в том, что я сделал?
  2. Не мог бы кто-нибудь пояснить объяснение этой ошибки времени компиляции в коде perlobj?
Это было полезно?

Решение

import () - опасное название для метода, поскольку Perl иногда вызывает для вас метод, называемый 'import'.Фактически, заявление:

родовое слово

действительно означает:

родовое слово

что происходит во время "компиляции".

Таким образом, вероятно, что ваш метод import () вызывается Perl как часть механизма загрузки класса, прежде чем вы получите возможность его использовать.Вам следует переименовать свой метод import () во что-нибудь другое (например, import_data), и все будет в порядке.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top