Как я могу заставить атрибут объекта в Perl быть установлен на полный массив, а не только его длину? - PullRequest
1 голос
/ 10 марта 2011

У меня есть объект, который я определил с помощью метода childNodes (), который возвращает массив.Когда я делаю что-то вроде:

my @arr = obj->childNodes()

Я ясно вижу, что он может правильно возвращать массив.

Моя проблема заключается в том, что, когда я пытаюсь использовать этот методчтобы установить атрибут другого объекта класса, Perl решает, что я просто хочу длину childNodes (), а не полный массив.Это совсем не то, что я хочу, и все разрушает.Код, который я использую для этого:

$self->{'_arr'} = obj->childNodes()

Как я могу сделать этот набор $ self -> {'_ arr'} в виде массива вместо просто скалярного числа?

Заранее спасибо!

1 Ответ

10 голосов
/ 10 марта 2011

Когда вы вычисляете массив в скалярном контексте, он возвращает длину массива.

Требуется ссылка на массив:

$self->{'_arr'} = [ obj->childNodes() ];

См. perldoc perlref.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...