리스트는 괄호로 묶여진 일련의 스칼라 값들이다. 다음의 예를 보자.
(5, “book”, 4, “perl”)
위의 리스트에는 4개의 요소로 구성되어 있다. 리스트의 길이에는 제한이 없다. 그리고 어떤 스칼라 값도 포함할 수 있다.
특정 목적으로 만들어진 변수에 리스트를 저장한 변수를 배열 변수(Array Variable)이라고 하고 줄여서 배열이라고 한다.
@numbers=(1,2,3,4,5); @colors=(“Red”,”Green”,”Blue”); @array=(5,’perl’,’computer’,45); |
배열은 @로 시작하는 변수이다. 배열의 값을 사용할 때는 $numbers[1]과 같이 $를 사용하고 [ ]를 사용하여 배열 번호를 입력하면 된다. 번호는 0번부터 시작한다. 앞에서 $numbers[3]의 값이 0번부터 시작하면 처음부터 4번째의 값인 4가 된다.
그렇다면 $numbers[5]의 값은 무엇일까? @numebrs는 0번부터 4번까지 5가지가 있다. $number[5]는 @numbers 배열의 6번째 값을 의미하는데 실제로 존재하지 않는 값이다. 이럴 경우에는 0(null)이 된다.
배열에도 스칼라 변수에서와 마찬가지로 숫자와 문자열 값을 구분하지 않는다. @array에서와 같이 배열에 값을 넣을 때도 마찬가지로 숫자값과 문자값을 혼용하여 입력할 수 있다.
@array2 = @array;
위의 식에서는 @array의 내용이 @array2에 그대로 대입된다. 같은 배열이 되는 것이다.
그렇다면 다음과 같은 경우는 어떻게 될까?
$size=@array;
눈치가 빠른 사람이면 변수 이름을 보고 알았을 것이다. $size에는 @array 배열의 크기가 대입된다. @array에는 모두 네 가지의 값이 저장되어 있으므로 4라는 값이 대입된다.
다음의 예는 배열의 마지막 첨자(subscript)를 대입하는 것이다. $last_index에는 2가 대입된다.
$last_index=$#colors;
리스트에는 몇 가지 함수가 있다. 하나씩 알아보자.
(1) shift
- 리스트의 첫 요소를 꺼낸다.
@list=(1,2,3,4);
$num = shift (@list);
결과는 $num에는 1이 들어가고 @list=(2,3,4)가 된다. 리스트 배열에서 첫 번째 요소를 꺼내고 해당 내용을 삭제한다.
(2)unshift
- 리스트의 처음에 요소를 추가하고 각 요소는 뒤로 하나씩 밀리게 된다.
@list=(1,2,3,4);
unshift(@list, 0);
결과는 @list=(0,1,2,3,4)가 된다. 지정된 값이 리스트의 첫 번째 요소가 되고 나머지는 그 뒤를 이어 하나씩 밀리게 되는 것이다.
(3) push
- 리스트의 마지막에 요소를 추가한다.
@list=(1,2,3,4);
push(@list, 5);
결과는 5가 @list의 마지막에 추가가 되어 @list=(1,2,3,4,5)가 된다.
(4) pop
- 리스트의 마지막 요소를 꺼낸다.
@list=(1,2,3,4);
$num=pop(@list);
결과는 @list의 마지막 요소 4를 꺼내서 $num에 대입하게 되고 @list=(1,2,3)이 된다.
(5) sort
- 리스트를 순서대로 정렬한다.
@list=(3,2,5,4,1);
@list=sort(@list);
결과는 @list에 있던 (3,2,5,4,1)을 값을 크기 순대로 정렬하여 (1,2,3,4,5)의 값이 @list에 다시 저장된다.
(6) reverse
- 리스트의 순서를 역순으로 뒤집는다.
@list=(1,2,3,4,5);
@list=reverse(@list);
결과는 @list의 (1,2,3,4,5)를 거꾸로 정렬하여 (5,4,3,2,1)이 @list에 저장된다.