Невозможно использовать строку в качестве ссылки ARRAY, пока "строгие ссылки" - PullRequest
1 голос
/ 06 февраля 2020

Я пытаюсь разыменовать массив, который является значением ha sh элемента списка, который находится внутри массива, чтобы я мог манипулировать и сохранять его.

Пример кода:

use strict;
use warnings;

my @array = qw(one two three four);
my @objects;

$objects[0]{"name"}="somestring";
$objects[0]{"value"}=@array;

print $objects[0]{"name"} . ": " . $objects[0]{"value"}[0];

print "\n";

Когда я пытаюсь запустить, я получаю:

Невозможно использовать строку ("4") в качестве ссылки ARRAY, в то время как "строгие ссылки" используются в listarray. pl line 11.

Есть ли способ сделать то, что я собираюсь (и использовать foreach для итерации внутреннего и внешнего массива)?

1 Ответ

4 голосов
/ 06 февраля 2020

Вы должны хранить массив как ссылку:

$objects[0]{"value"} = \@array;

В вашем коде @array вычислялся в скалярном контексте, который возвращает количество элементов в массиве (4).

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