블로그 스킨이 새로 떴길래 바꿨어요. 깔끔해서 좋네요.
- 배열, 리스트 데이터 (이어서..)
- 배열 함수
배열 요소 엑세스(접근)
- 숫자 인덱스로 배열의 요소를 액세스하는 Substring 함수 이용 가능
- 숫자 인덱스 대신 리터럴 정수도 사용 가능 (ex. $x=1 을 1 대신 사용하는 것)
- 예)
@alice = (1,2,3);
$b = $alice[0];
$alice[0] = 9; # @alice = (9,2,3); - 요소 간 교환 가능
- 예)
@alice = (9,8);
($alice[0],$alice[1]) = ($alice[1], $alice[0]); # @alice=(8,9); - 배열 슬라이스
- 예)
@alice = (qw(apple banana choco))[0,1];
# <=same as=> @x = qw(apple banana choco); @alice = ("apple", "banana"); - 주의사항
- 예)
@alice = (10,9,8);
@bob = (0,1,2);
@charlie = @alice[@bob];
--> same as @alice[0,1,2] or ($alice[0], $alice[1], $alice[2]); - 배열의 끝을 넘어서 엑세스하는 경우, (경고 없이) undef 리턴
- 배열의 끝을 넘어서 값을 할당하는 경우, 자동으로 배열 확장
- 배열의 마지막 요소의 인덱스 값을 얻으려면 $# 사용
- 예)@alice=(1,2,3); # 이때 $#alice 값은 2를 반환함.
- 첨자가 음수(negative integer)인 경우, 배열의 끝에서 거꾸로 계산
- 예)@alice=(1,2,3); # $alice[-1] 값은 3
Push / Pop 함수
- 행렬의 마지막 요소 위치(rightmost)에서 연산 발생
- Push(행렬변수, 새로운 값)
- 행렬의 맨 마지막에 요소 추가
- push(@list, $new_val) 은 @list = (@list, $new_val)와 동일
- Pop(행렬변수)
- 행렬의 마지막 요소 삭제
- Cf. 리터럴 리스트 상에는 의미 없음
Shift / Unshift 함수
- 행렬의 첫번째 요소 위치(leftmost)에서 연산 발생
- Shift(행렬변수)
- 행렬의 맨 처음 요소 제거
- Unshift(행렬변수, 새로운 값)
- 행렬의 맨 처음 요소에 새로운 값 추가
- Cf. 공백 배열 변수에 주어지면 undef 리턴
Reverse 함수
- 인수로 주어진 요소의 순서를 역으로 한 결과 리스트를 반환함
- 예) reverse(7,8,9) --> (9,8,7) 리턴
Sort 함수
- 인수를 받아서, ASCII 상에서 오름차 순으로 나열된 단일 문자열들인 것처럼 보이도록 정렬함
- 인수로 받은 원래 리스트를 변화시키지 않고, 정렬된 리스트를 리턴함
- 숫자에 대한 정렬은 산술적이지 않고, 해당 숫자에 대한 문자열 값으로 행해짐
- 예) @x=(3,11,200); @y=sort(@x); # @x=(3,11,200), @y=(11,200,3);
- (1,10,11,100,....,2,20,21,22,...3........ 이런 순서로!)
Chomp 함수
- 스칼라 변수 뿐만 아니라 배열에서도 적용가능
- 배열 상의 요소에 존재하는 뉴라인을 한꺼번에 제거할 수 있음.
- 예)
@list=("my\n","world\n","hello");
chomp(@list); # 결과 @list = ("my", "world", "hello");
배열로서의 <STDIN>
- 리스트 구문에서 파일의 마지막까지의 남은 모든 행을 리턴
- 예) @list = <STDIN>;
- 3개의 행을 입력 후, Ctrl+D (EOF 표시) 를 누르면, 배열은 3개의 요소로 끝남