질문이 있습니다. 해시 및 참조 자료에 익숙하지 않아서 도움이 되었으면합니다. 해시/해시 참조 데이터 구조의 요소에 액세스하는 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에 액세스하려면, 올바른 또는 선호하는 방법은 무엇입니까 그 요소에 접근하고 있습니까?
http://www.superuser.com/questions
http://www.superuser.com/faq
http://www.stackoverflow.com/faq
http://www.stackoverflow.com/questions
------ 수정 ------
:
예를 들어, 나는 다음과 함께 foreach
루프에 물건을 할 수있는 다음과 같은 URL을 사용하여 종료됩니다 위에 표시된 데이터 구조 아래의 요소에 액세스하는 코드 :
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 ....
내가 찾던 것을 정확히 감사합니다. '13015','10506' 및'33362'과 같은 모든 stackoverflow url의 끝에있는 숫자에만 액세스하려는 경우 코드는 어떻게 생겼을까요? 귀하의 도움을 받아 데이터 구조의 다른 부분에 액세스하는 방법을 배워야합니다. –
모든 스택 오버 플로우 URL의 끝에있는 숫자 (예 : 13015, 10506 및 33362)에만 액세스하려는 경우 코드가 표시되는 것을 보여 주시겠습니까 –
@ perl-user 간단합니다. 키 "http : // www.stackoverflow.com /"의 값은 해시 참조입니다. 해당 해시 참조의 키는''difference '' 및''equal''이며 그 값은 해시 참조입니다. 이러한 해시 참조의 값은 사용자가 수행 한 값입니다. 그냥'for' 루프를 쌓아두면 괜찮을거야. 무슨 일이 일어나고 있는지 확실하지 않으면'Data :: Dumper'로 결과를 확인하십시오. – TLP