필자는 perl을 처음 사용하고 perl로 작성된 코드를 읽었습니다. 라인은 다음과 같이 읽습니다perl에서이 변수의 데이터 구조는 무엇입니까?
$Map{$a}->{$b} = $c{$d};
내가 %samplehash
처럼 보이는 해시 익숙하고 $samplehash{a}="b"
로 액세스하지만 위의 라인이 실제로지도 무엇인지에 대해 무엇을 말하는가?
필자는 perl을 처음 사용하고 perl로 작성된 코드를 읽었습니다. 라인은 다음과 같이 읽습니다perl에서이 변수의 데이터 구조는 무엇입니까?
$Map{$a}->{$b} = $c{$d};
내가 %samplehash
처럼 보이는 해시 익숙하고 $samplehash{a}="b"
로 액세스하지만 위의 라인이 실제로지도 무엇인지에 대해 무엇을 말하는가?
을 감안할 때 이러한 변수 :
my $a = "apples";
my $b = "pears";
my %c = ("bananas" => 2);
my $d = "bananas";
my %Map;
해시에서
$Map{$a}->{$b} = $c{$d};
결과는 다음과 같이 찾고 할당 :
%Map = (
"apples" => {
"pears" => 2
}
);
%Map
은 해시입니다. 할당 후에 자동 노출을 통한 해시 참조가 포함되어 있습니다. 내부 해시 참조는 %Map
해시의 $Map{$a}->{$b}
요소에 액세스하여 Perl에 의해 자동으로 생성됩니다.
$ Map의 키 $ a 값은 $ b에 저장된 키 이름을 가진 연관 배열의 참조입니다.
%Map = ($a => { $b => $c{$d} }, ...)
$Map{$a}->{$b}
만 %hash
대신 해시 $Map{$a}
기준을 사용
$hash{$b}
같다
${ $Map{$a} }{$b}
동일하다.
중첩 된 데이터 구조를 사용하는 방법에 대한 몇 가지 쉬운 규칙을 보려면 http://perlmonks.org/?node=References+quick+reference을 참조하십시오.
또한 autovivification을 사용하면 (기본값) $Map{$a}
이 존재하지 않거나 undef로 시작하면 암시 적으로 새 해시 참조로 초기화됩니다.
무엇입니까? perldoc을 참조하십시오. http://perldoc.perl.org/functions/map.html – yb007
특정 데이터 구조를 이해해야 할 때 덤핑 변수가 큰 도움이됩니다. 그냥'Data :: Dumper'를 사용하고 나중에'print Dumper ($ Map);'를 사용하십시오. – musiKk
@musiKk : 당신이'print Dumper (\ % Map);을 의미하는 것 같아요. – flesk