참조는 포인터입니다. Perl 참조는 변수, 배열, 해시 테이블(연관 배열이라고도 함) 또는 서브루틴을 가리킬 수 있는 스칼라 유형이며 프로그램의 어느 곳에나 적용할 수 있습니다.
변수를 정의할 때 변수 이름 앞에 를 추가하여 변수에 대한 참조를 가져옵니다. 예:
$scalarref = $foo; # 스칼라 변수 참조 $arrayref = @ARGV; # 목록 참조 $hashref = &handler; # 서브루틴 참조 $globref = *foo ; 참조
[] 정의를 사용하여 배열에서 익명 배열 참조를 사용할 수 있습니다.
$aref= [ 1,"foo",undef,13 ];
익명 배열의 요소는 여전히 익명 배열일 수 있으므로 이 메서드를 사용하여 배열 배열을 구성할 수 있으며 모든 차원의 배열을 구성할 수 있습니다.
내 $aref = [ [1, 2, 3], [4, 5, 6], [7, 8, 9],]
해시에서는 {}를 사용하여 정의된 익명 해시 참조를 사용할 수 있습니다.
$href= { 4월 =>4, 8월 =>8 };
서브루틴 이름 없이 익명의 서브루틴 참조를 만들 수도 있습니다.
$coderef = sub { print "Codercto!n" };
역참조는 유형에 따라 $, @, %를 사용하여 취소할 수 있습니다.
위 예제를 실행한 결과는 다음과 같습니다.
10은: 101 2 3은: 123%var는: key110key220
변수 유형이 확실하지 않은 경우 ref를 사용하여 확인할 수 있습니다. 반환 값 목록은 다음 값이 없으면 false를 반환합니다.
SCALARARRAYHASHCODEGLOBREF
예는 다음과 같습니다:
위 예제를 실행한 결과는 다음과 같습니다.
r의 참조 유형: SCALAR r의 참조 유형: ARRAYr 참조 유형: HASH
순환 참조는 두 참조가 서로 포함되어 있을 때 발생합니다. 주의해서 사용해야 합니다. 그렇지 않으면 다음 예와 같이 메모리 누수가 발생합니다.
위 예제를 실행한 결과는 다음과 같습니다.
foo의 값은 REF(0x9aae38)입니다.
함수 참조 형식: &
참조 함수 호출 형식: & + 생성된 참조 이름.
예는 다음과 같습니다:
위 예제를 실행한 결과는 다음과 같습니다.
요소: age 요소: 3 요소: 이름 요소: codercto