Я думаю, что мне нужен массив Массив Хэша, но я понятия не имею, как это сделать.Как создать массив массивов хэшей Perl?
Может ли Perl это сделать?
И если да, как выглядел бы код?
Я думаю, что мне нужен массив Массив Хэша, но я понятия не имею, как это сделать.Как создать массив массивов хэшей Perl?
Может ли Perl это сделать?
И если да, как выглядел бы код?
my $aah =
[ # outer array
[ # first inner array
{ # first inner hash
foo => 'bar',
},
{ # second inner hash
bar => 'baaz',
},
],
[ # secnd inner array
#...
],
# ...
];
Вы можете получить доступ к элементам, как это:
$aah->[0]->[1]->{bar} # => 'baaz'
Или '$ aah -> [0] [1] {bar}' ... все в массиве или хеше - это скаляр, поэтому любые подструктуры можно считать ссылками, поэтому нужна только первая стрелка. – Axeman
Или '$$ arr [0] [1] {bar}'. Я лично предпочитаю это над символом '->'. – Dummy00001
Это не должно быть ссылкой на массив, замените первую [с (последним]) и $ aah на @aah. Теперь вы можете получить доступ к следующим данным: $ aah [0] [1] {bar}; не требуется синтаксис отмены ссылки, по причине, указанной Axeman. – MkV
Вы можете обратиться элементы такой структуры данных, таким образом:
$x->[1][2]{foo} = "hello"
Вы не должны даже предварительно определить структуру. Просто начните работать с элементами, как будто они уже есть.
Эта особенность Perl известна как ** autovivification **. –
Хорошо ли это работает с 'use warnings' и' use strict'? – Dummy00001
@ Dummy000001: да. –
my $arr =
[
[
{key1 => $value1, key2 => $value2},
{key1 => $value3}
],
[
{rubbish => 'nonsense'},
]
];
т.д.
Просто потому, что его вложенная структура данных не означает, что она должна быть arrayref, она может быть массивом arrayrefs hashrefs. – MkV
@MkV: Большинство программистов предпочли бы arrayref, так как дешевле и проще обходить структуру данных, чем список. Кстати, вы ответили на этот ответ? Если это так, это довольно хромая причина. –
Конечно, это может быть массив, а не массив в верхней части. И что? Он не меняет ответ каким-либо существенным образом. Я не знаю, почему вы сочли необходимым добавить этот комментарий к ответам моего и jkramer. –
perldoc perldsc
хороший документ для чтения, чтобы получить представление структур данных в Perl.
Зачем вам нужен массив массивов хешей? Иногда, если вы сообщаете нам, что вам нужно моделировать, мы можем помочь вам разобраться в более конкретных примерах (или если AoAoH подходит для этого). –