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로 받아야 했습니다.