프로그래밍Perl 개발자

Perl에서 변수 작업의 특징을 설명하십시오. 스칼라, 배열 및 해시 변수는 어떻게 다릅니까? 각 유형의 사용 예를 제시하십시오.

Hintsage AI 어시스턴트로 면접 통과

답변

Perl에서는 변수를 스칼라 ($), 배열 (@)해시 (%):

  • 스칼라 ($variable) – 단일 값(문자열, 숫자)을 저장합니다:

    my $name = "Ivan"; my $age = 30;
  • 배열 (@array) – 순서가 있는 요소들의 집합(숫자로 인덱싱됨):

    my @fruits = ("apple", "banana", "cherry"); print $fruits[1]; # banana
  • 해시 (%hash) – 키-값 쌍의 집합(연관 배열):

    my %colors = (red => "#ff0000", green => "#00ff00"); print $colors{"red"}; # #ff0000

요소에 접근할 때는 변수 유형에 따라 특정 기호를 사용해야 합니다:

  • $array[0] — 배열 요소
  • $hash{"key"} — 키에 따른 해시 값

함정 질문

@array[1,2]$array[1,2]는 어떻게 다릅니까?

답변:

  • @array[1,2] — 배열의 여러 요소로 구성된 목록(슬라이스)을 제공합니다.
  • $array[1,2] — 잘못된 구문으로 오류가 발생합니다. 여러 배열 요소에 접근할 때는 슬라이스 @array[...]를 사용해야 합니다.

예제:

my @array = (10, 20, 30, 40); my @slice = @array[1,2]; # (20, 30)

주제에 대한 미숙지로 인한 실제 오류 예


이야기

로그 프로젝트에서 프로그래머가 해시 요소에 접근할 때 @colors{"red"}를 사용했습니다. 그 결과 해시 값이 아니라 랜덤 오류가 발생했습니다. 단일 값에는 $가 필요합니다.


이야기

한 서비스에서 배열의 인덱스를 반복할 때 올바른 접근 방식을 사용하지 않고 $array[$i] 대신 @array$i를 사용하여 경고 및 잘못된 결과를 초래했습니다.


이야기

API 프로젝트에서 배열을 $args로 받는 함수를 설명했으나 호출 시 스칼라 없이 배열을 전달(func(@list))하여, 배열 요소가 목록으로 "펼쳐져" 함수가 예상한 대로 작동하지 않았습니다. 배열을 @args로 받아야 했습니다.