Доступ к элементам в хэше хэшей массивов в Perl

my %PlannedPerWeek = (
                    September => {
                            Week1 => [80, 23, 199, 45, 19, 36],
                            Week2 => [78, 21, 195, 43, 18, 36],
                            Week3 => [76, 19, 191, 41, 17, 36],
                            Week4 => [74, 17, 187, 39, 16, 36],
                    }
    );

У меня есть вышеупомянутый хэш массивов в проге perl. Как получить доступ к элементу, скажем "199" из приведенной выше структуры данных.

1 ответ

Решение

Это довольно просто. Первый - это хеш, поэтому вам не нужно разыменовывать его. Каждый следующий "контейнер" внутри вашей структуры данных является ссылкой, поэтому вы можете использовать -> оператор разыменовать эту структуру. Материал внутри фигурных скобок {} является ссылкой на хеш (пары ключ / значение) и нуждается в curls для разыменования, в то время как материал в квадратных скобках [] является ссылкой на массив и снова нуждается в квадратных скобках.

Теперь это просто выстраивание в ряд и счет до 3:

print $PlannedPerWeek{'September'}->{'Week1'}->[2];
                                               ^---- 3rd array ref element
                                    ^--------------- hashref key 'Week1'
                      ^----------------------------- hash key 'September'

Вы также можете опустить стрелки и просто пойти:

print $PlannedPerWeek{'September'}{'Week3'}[2];

Вы должны прочитать perlreftut, который говорит:

Между двумя подписками стрелка необязательна.

Другие вопросы по тегам