У меня есть вопрос. Я надеюсь, что вы сможете помочь, поскольку я новичок в хэшах и хеш-справочных материалах?Perl, обращающийся к элементам в хеш-хеш-справочной структуре данных
У меня есть следующие структуры данных:
$VAR1 = {
'http://www.superuser.com/' => {
'difference' => {
'http://www.superuser.com/questions' => '10735',
'http://www.superuser.com/faq' => '13095'
},
'equal' => {
'http://www.superuser.com/ ' => '20892'
}
},
'http://www.stackoverflow.com/' => {
'difference' => {
'http://www.stackoverflow.com/faq' => '13015',
'http://www.stackoverflow.com/questions' => '10506'
},
'equal' => {
'http://www.stackoverflow.com/ ' => '33362'
}
}
Если я хочу, чтобы получить доступ ко всем URL, в ключе 'difference'
так что я могу затем выполнить некоторые другие действия по URL, то, что является правильным или предпочтительным методом доступ к этим элементам?
например, я в конечном итоге со следующими URL-адреса, которые я могу после этого сделать материал, чтобы в foreach
цикле с:
http://www.superuser.com/questions
http://www.superuser.com/faq
http://www.stackoverflow.com/faq
http://www.stackoverflow.com/questions
------ EDIT ------
Код для доступа к элементам, расположенным дальше по структуре данных, приведенной выше:
my @urls;
foreach my $key1 (keys(%{$VAR1})) {
print("$key1\n");
foreach my $key2 (keys(%{$VAR1->{$key1}})) {
print("\t$key2\n");
foreach my $key3 (keys(%{$VAR1->{$key1}{$key2}})) {
print("\t\t$key3\n");
push @urls, keys %{$VAR1->{$key1}{$key2}{$key3}};
}
}
}
print "@urls\n";
Используя приведенный выше код, почему возникает следующая ошибка?
Can't use string ("13238") as a HASH ref while "strict refs" in use at ....
спасибо, что именно то, что я искал. Как бы выглядел код, если бы я хотел получить доступ только к номерам в конце каждого URL-адреса stackoverflow, то есть '13015',' 10506' и '33362'. Мне нужно узнать, как обращаться к различным частям структуры данных, спасибо за вашу помощь. –
Не могли бы вы показать мне, что будет делать код, если бы я хотел получить доступ только к номерам в конце каждого URL-адреса stackoverflow i.e 13015, 10506 и 33362. Большое спасибо –
@ perl-user. Это просто. Значение ключа '' http: // www.stackoverflow.com/''является хеш-кодом. Ключи в этом хэш-ref - это '' difference'' и ''equal'', а их значения также являются хэш-ссылками. Значения этих хэш-ссылок являются значениями, которые вы после. Просто складывайте циклы 'for', и все будет хорошо. Проверьте свои результаты с помощью «Data :: Dumper», если вы не знаете, что происходит. – TLP