날짜: 1996-03-07 | 글쓴이: 도아 | 8243 번 | 프린트 | 메일로보내기

펄을 배우자 - 제 4강 배열 변수


보다 관심이 가는 변수는 스칼라의 목록(숫자나 문자의 집합)인 배열 변수이다. 배열 변수는 변수명이
@
로 시작된다는 점만 제외하고는 스칼라 변수와 동일한 형식을 갖는다.
@food  = ("사과", "배", "장어");
@music = ("피리", "퉁소");
위의 문장은 세개의 요소를 배열 변수 @food에 할당하고 두개의 요소를 배열 변수 @music에 할당하는 문장이다. 배열은 0으로 시작하는 배열 첨자에의해 참조할 수 있으며, 대괄호가 배열첨자를 지정하는데 사용된다.
$food[2]
위의 표현식은 장어을 리턴한다. 장어는 스칼라 이므로 @$로 변경된다. 배열할당 모든 펄에서 처럼 다른 환경에서 동일한 표현식은 다른 결과를 만든다. 아래에서 첫번째 할당문은 두번째 할당문과 동일한 문장이 된다.
@moremusic = ("깽깽이", @music, "징");
@moremusic = ("깽깽이", "피리", "퉁소", "징");
위 문장은 배열에 요소를 추가하는 방법을 제공한다. 배열에 요소를 추가하는 보다 산뜻한 방법은 다음 문장을 사용하는 것이다.
push(@food, "꼴뚜기");
이 문장은 꼴뚜기를 배열 @food의 끝에 추가한다. 두개 이상의 항목을 하나의 배열에 추가하기위해 다음 형식중 하나를 사용하면 된다:
push(@food, "꼴뚜기", "앵두");
push(@food, ("꼴뚜기", "앵두"));
push(@food, @morefood);
push 함수는 새로운 목록(배열)의 크기를 리턴한다. 목록으로부터 마지막 항목을 제거하고 제거된 항목을 리턴받기위해 pop 함수를 사용한다. 최초의 목록에대해 pop 함수를 수행하면 pop 함수는 장어를 리턴하며, @food는 두개의 요소를 갖게된다:
$grub = pop(@food);	# $grub = "장어"

배열을 스칼라 변수에 할당하는 것도 가능하다. 사용되는 환경이 중요하다.

$f = @food;
은 @food의 크기를 할당하지만
$f = "@food";
은 각 요소 사이를 공백으로 채운 문자열을 리턴한다. 이 공백은 특수 변수 $"의 값을 변경함으로서 임의의 다른 문자열로 대치할 수 있다. 이 변수는 펄의 주요 특수 변수중의 하나이며, 가장 이상한 이름을 가지고 있다. 배열은 스칼라 변수를 다중 할당하는데에 사용될 수도 있다:
($a, $b) = ($c, $d);	# $a=$c; $b=$d;와 동일
($a, $b) = @food;		# $a와 $b에 @food의 처음 두 항목을 할당
($a, @somefood) = @food;	# $a는 @food의 첫번째 항목
			# @somefood는 나머지 목록
(@somefood, $a) = @food;	# @somefood는 @food
			# $a는 정의되지 않음
마지막 할당문에서 배열의 크기는 자동조절되며 따라서 @somefood는 @food 만한 크기로 증가하기때문에 발생한다. 따라서 위와같은 형식은 절대 피해야 한다. 마지막으로 목록의 마지막 배열첨자는 다음과 같은 식을 사용해서 찾을 수 있다.
$#food
배열출력 환경이 중요하므로 다음의 모든 코드가 서로다른 결과를 만드는 것에 놀라지 말기 바란다:
print @food;	# 배열자체
print "@food";	# 큰 따옴표로 인용
print @food."";	# 스칼라 변수 환경
연습 위의 세개의 프린트문이 각각 어떠한 동작을 하는지 확인한다.


다음글: 펄을 배우자 - 제 5강 파일핸들 (11332)1996-03-08
이전글: 펄을 배우자 - 제 3강 스칼라 변수 (7870)1996-03-06

세상사는 이야기

  • 윈도 10, 한영 전환도 >
  • 바보도 할 수 있는 War >
  • 북마크에도 확장 아이 >
  • 크롬은 가라, 비발디가 >
  • 감히 아이폰 관리의 최 >
  • 디지털 노마드의 편집 >
  • [블로그 복귀 알림] 새 >
  • 오타도 즐거운 안드로 >
  • 최고의 OCR 어플, Text >
  • 누구나 할 수 있는 순 >


  • RSS 구독 (익명 | 회원 | 강좌 | 포럼)
    (C) 1996 ~ 2014 QAOS.com All rights reserved.