2011-10-13 5 views
1
my $hash_ref = { a => 1, b => 2 }; 
my $tmp_ref = $hash_ref; 

코드는 위와 같습니다. 해시 값을 변경하고 일부 새 쌍을 삽입하고 싶습니다.perl 해시 참조의 참조

  1. 어떻게 내가 그것을 참조의 참조로 변경하거나 삽입 할 수 있나요 $tmp_ref
  2. 에 의해을 달성 할 수 다음과 같이 내 질문은?
  3. 참조의 참조, 참조 및 구체적인 데이터 구조 (여기서는 해시)간에 일관성이 있습니까?

감사합니다. 당신이 $hash_ref에 뭔가를 추가 할 수 있도록

+0

참조 자료를 얻을 수는 있지만 꼭 필요한 것은 아닌 것 같습니다. 직접적인 참조만으로 충분합니다. 그러나 유용한 것은 중첩 된 데이터 구조입니다. 해시 값이 내부 해시 참조를 참조하는 hashref – stevenl

답변

2
모두 $hash_ref

$tmp_ref은 동일한 해시를 참조합니다 :

$tmp_ref->{c} = 3; 

그런 다음 모두 $hash_ref$tmp_ref 것이다 이 같은 (a => 1, b => 2, c => 3) 해시를 참조하십시오.

참조는 Perl의 포인터 버전입니다.

3

이 경우 $tmp_ref$hash_ref에 대한 참조가 아니며 단순히 $hash_ref의 값이 무엇이든간에 사본입니다. 당신이 $hash_ref 때와 같은

당신은 $tmp_ref와 해시에 액세스 할 수 있습니다

:

이 경우 실제로 여기 $hash_ref$tmp_ref에 대한 참조를 만들고 싶었다 원래 해시에 액세스하는 것 어떻게

$tmp_ref->{a}; # 1 

$tmp_ref->{foobar} = "hi"; 
$tmp_ref->{foobar}; # "hi" 

$tmp_ref = \$hash_ref; 
${$$tmp_ref}{a};