Как уже упоминали другие, вы описываете необычную структуру данных: массив только с одним элементом, который является массивом ссылок на хэш-функции Я предполагаю, что вы действительно хотите эту структуру по какой-то причине.
my @elements = [
{name => "John Doe", age => 23},
{name => "Jane Doe", age => 24}
];
эквивалентно
my @elements = [];
push(@{ $elements[0] }, {name => "John Doe", age => 23});
push(@{ $elements[0] }, {name => "Jane Doe", age => 24});
потому что вы хотите поместить хеш-ссылки в arrayref в $elements[0]
, а не в @elements
массив.
Но необычно иметь массив только с одним элементом. Глядя на добавленный вами дополнительный код, вы действительно хотите получить следующее:
my $elementsRef = [];
push(@$elementsRef, {name => "John Doe", age => 23});
push(@$elementsRef, {name => "Jane Doe", age => 24});
Или это:
my @elements;
push(@elements, {name => "John Doe", age => 23});
push(@elements, {name => "Jane Doe", age => 24});
, а затем используйте \@elements
там, где вы в данный момент используете @elements
.
Любой из них будет работать. Вам решать, какой из них вы предпочитаете. Я бы, наверное, пошел со второй версией.