даных HoHoAPerl: Копирование массива из хэша хэша массивов
my %FIELDS = (
LA => {
NAME => [1],
ADDRESS => [2,3,4,5],
TYPE => [6],
LICENCE => [0],
ACTIVE => [],
},
...
);
Я пытаюсь сделать копию конкретного массива
my @ADDRESS_FIELDS = @{$FIELDS{$STATE}->{ADDRESS} };
Поскольку все внутри% Филдс по ссылке стрелка de-ссылки на внутренний хэш и @ {} отменяет ссылки на массив. (Я понимаю, что стрела не является строго необходимым)
print $ADDRESS_FIELDS[3]."\n";
print @ADDRESS_FIELDS."\n";
дает
5
4
Первая печать ведет себя, как и ожидалось, но второй один дает мне скалярное значение, я полагаю, упоминаемая массив вместо новой копии. Где я сбиваюсь с пути?
Что вы имеете в виду «вместо новой копии»? «4» - это просто массив, оцененный в скалярном контексте, который дает количество элементов. Возможно, вы искали 'print '@ADDRESS_FIELDS \ n" '? – mbethke
* Headdesk * Иногда мы пропускаем мелочи. Благодарю. – OBoud