참조

참조 에서 Perl

9개의 연습 문제

참조 소개

참조를 이해하는 것은 Perl을 효과적으로 사용하는 데 있어 기본이 되는 요소예요. 참조는 스칼라이고, 배열과 해시에는 스칼라만 담을 수 있기 때문에, 이런 자료 구조를 중첩하려면 참조가 핵심이에요.

백슬래시 연산자 \를 사용하면 기존 변수와 서브루틴에 대한 참조를 만들 수 있어요:

  • \$scalar는 스칼라 참조를 만들어요 (변수뿐 아니라 \1처럼 아무 스칼라나 가능해요).
  • \@array는 배열 참조를 만들어요.
  • \%hash는 해시 참조를 만들어요.
  • \&sub는 코드 참조를 만들어요.

배열, 해시, 서브루틴에 대해서는 익명 참조라고 하는 것도 만들 수 있어요:

  • ['Alice', 'Bob', 'Charlie']는 익명 배열 참조를 만들어요.
  • {foo => 'a', bar => 'b', baz => 'c'}는 익명 해시 참조를 만들어요.
  • sub { return 1 }은 익명 코드 참조를 만들어요.

경고: Perl에서 중괄호는 특정 상황에서 모호할 수 있어요. 기대한 해시 참조가 나오지 않는다면, 앞에 플러스를 붙여 모호함을 없애봐요. 예를 들어 +{}처럼요. 자세한 내용은 Curly Brackets를 참고해요.

참조는 화살표 연산자 ->로 접근할 수 있어요:

  • $ref->[0]는 배열 참조 안의 원소에 접근해요.
  • $ref->{foo}는 해시 참조 안의 값에 접근해요.
  • $ref->($arg)는 코드 참조를 통해 서브루틴을 호출해요.

다차원 배열이나 중첩된 해시처럼 복잡한 자료 구조 안의 데이터는 첨자를 연달아 붙여서 접근할 수 있어요. 예를 들어 $ref->{foo}[0]{bar}는 $ref->{foo}->[0]->{bar}와 같아요.

배열이나 해시 전체를 역참조하고 싶다면 화살표 연산자 뒤에 각각 @* 또는 %*를 붙이면 돼요. 예를 들어 $ref->@*나 $ref->%*처럼요. *를 첨자로 바꾸면 배열이나 해시 참조의 슬라이스를 얻을 수도 있어요. 예를 들어 $ref->@[0..2]나 $ref->@{'Foo', 'Bar'}처럼요. 슬라이스에서는 배열 변수와 해시 변수에서와 같은 방식으로 시길 변형이 적용돼요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요

참조 배우기

연습이 잠겨 있어요

참조 개념을 연습하려면 연습 문제 8개를 더 잠금 해제해요