2011-04-27 5 views

답변

1

이것은 간단히 배열 참조를 역 참조하는 것입니다. $array_ref은 배열에 대한 참조를 포함하고 @array은 참조 된 배열의 내용으로 설정됩니다.

$ perl -E 'my $a = [1, 2, 3]; my @b = @{$a}; say $a; say @b' 
ARRAY(0x100803ea0) # a reference to an array 
123 # actual array 
+0

죄송하지만 배열에 대한 포인터가 아닙니다. 배열에 대한 직렬화 된 참조입니다. 참조는 포인터가 아닙니다. – shawnhcorey

+0

고마워요. 고침. – zoul

0

perlref을 읽을 필요가 있습니다.

간단히 말해 @array$array_ref이 가리키는 배열과 같습니다. 그것은 $array_ref에 무엇이 들어 있는지 알지 못하면서 줄 수있는 가장 정확한 대답입니다.

1

$array_ref은 아마도 배열 자체와 다른 배열에 대한 참조를 보유하고있을 것입니다. 배열 (이름이)은 요소가 있습니다 (비어 있지 않은 경우). 배열 참조 ($some_arrayref)는 실제 배열을 참조하는 데 사용되는 스칼라 값입니다. 실제 배열은 명명 된 배열 (변수 이름 포함)이거나 익명 배열 일 수 있습니다 (명명 된 변수가 없지만 참조로만 참조).

$array_ref이 나타내는 배열에있는 요소를 사용하려면 참조를 해제해야합니다. 하나의 구문은 @$array_ref는 (배열 (@)이 array_ref 이름 스칼라 ($)에 의해 참조 "로 그 읽기)입니다. 내가 함께합니다 (@, $% 문자) sigils의 무리를 방해의 팬 적이 때 특히 참조가 더 복잡하거나 중첩 될 때 코드의 가독성을 방해한다고 생각합니다. Perl은 진행 상황을 명확하게하고 시각적으로 명확하게하는 중괄호를 허용합니다. 배열 (@{....}) $array_ref에 의해 참조 된 배열

Perl의 POD에서 perlreftut을 살펴보십시오. 좋은 출발점입니다.

0

$array_ref은 목록/배열에 대한 참조입니다. 그래서 순서대로 목록 내용에 역 참조와 모든 내용을 얻을, 당신은

@{$array_ref} 

을 사용하고이이 같은 다른 배열/목록에 할당 할 수 있습니다 :

my @array = @{$array_ref}; 
1

코드가한다 $ array_ref가 참조하는 배열의 최상위 복사본을 @array에 저장합니다.

use Storable; 
@array = @{ dclone($array_ref) }; 

자세한 내용은 perldoc Storable를 참조하십시오

는 저장 가능에서 dclone을 사용, 깊은 수준의 사본을 확인하십시오.

Storable은 Perl과 함께 설치되는 표준 모듈입니다. 표준 Pargmatics 및 모듈의 목록을 보려면 perldoc perlmodlib을 참조하십시오.