У меня есть большой многомерный хеш, который является импортом структуры JSON.
my %bighash;
В %bighash есть элемент, который называется:
$bighash{'core'}{'dates'}{'year'} = 2019.
У меня есть отдельная строковая переменная с именем core.dates.year, которую я хотел бы использовать для извлечения 2019 года из %bigash.
Я написал этот код:
my @keys = split(/\./, 'core.dates.year');
my %hash = ();
my $hash_ref = \%hash;
for my $key ( @keys ){
$hash_ref->{$key} = {};
$hash_ref = $hash_ref->{$key};
}
который, когда я выполняю:
say Dumper \%hash;
выходы:
$VAR1 = {
'core' => {
'dates' => {
'year' => {}
}
}
};
Пока все хорошо. Но сейчас я хочу сказать:
print $bighash{\%hash};
Который я хочу вернуть в 2019 году. Но ничего не возвращается или я вижу ошибку «Использование неинициализированного значения в% bighash в конкатенации (.) или строку в script.pl, строка 1371, строка 17 (# 1) .. .
Может ли кто-нибудь указать мне, что происходит?
Мой проект включает в себя встраивание строк во внешний файл, который затем заменяется фактическими значениями из %bigash, так что это просто интерполяция строк.
Спасибо!
Dive
иDiveVal
. - person ikegami   schedule 26.02.2019