2014-01-25 2 views
0

Perl을 처음 사용했습니다. 이 주제에 대한 두 번째 강의입니다.Perl에서 참조하는 목적은 무엇입니까?

나는이 (기본 수준) 펄에 대한 참조를 사용하는 방법을 을 이해하지만 그 이유을 이해하지 못한다. 여기에 교과서의 참고 문헌을 추가 한 예가 나와 있습니다.

$array_ref = ["val1", "val2", "val3"]; #create an array reference 
print("$$array_ref[1]\n"); #immediately dereference it to print the second element 
오히려 쓰기보다 참조를 사용하는 것이 왜

:

@array_name = ("val1", "val2", "val3"); #create an array 
print("$array_name[1]\n"); #print the second element 

이 경우에 대한 참조를 사용하여 어떤 장점이없는 경우, 당신이 차이를 만들 것입니다 예를 제공 할 수있다?

답변

8

당신은 거기에 참조를 사용하지 않을 것입니다.

배열 및 해시의 값은 스칼라 일 수 있으므로 참조를 사용하여 배열 또는 해시를 그 중 하나에 저장하십시오. 당신이 그 중 하나에 배열이나 해시를 전달하는 참조를 사용하는 것 때문에 스칼라의

push @a, \@b; 

만 목록, 서브 루틴에 전달 될 수있다. 당신이 배열이나 해시를 반환하는 참조를 사용하는 것 때문에 스칼라의

f(\@a, \@b); 

만 목록, 서브 루틴에 의해 반환 될 수있다.

return (\@a, \@b); 

IO 개체와 (최근까지) 정규식 개체는 변수의 변수에 저장할 수 없습니다. 참조가 사용됩니다. 복잡한 데이터 구조를 만드는 펄 도움말

open(my $fh, '<', $0) or die $!; 
print(ref($fh), "\n"); 

3

참조. 같은, 심지어 당신은 쉽게 복잡한 데이터 구조를 구축 할 수 있습니다

my $a = [ 
     [1, 2], 
     [3, 4], 
]; 

print $a->[1]->[0]; #Will print 3 

도움말 참조 :

my $employee = { 
    name =>"xyz", 
    age => 22, 
    contactnums => [ 9xxxxxxxx, 7xxxxxxxx ], 
    addresses => { 
        office => 'something1', 
        residential => 'something2', 
        permanent => 'something3', 
       } 
    id => '12121', 
}; 
펄에서 다차원 배열 참조를 사용하여 구현 될 수있다처럼
관련 문제