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

펄을 배우자 - 제 11강 연관배열


일반적인 배열 요소는 숫자에의해 참조할 수 있다. @food라는 배열의 첫번째 요소는 $food[0]이고, 두번째 요소는 $food[1]이다. 그러나 펄은 문자열에의해 배열요소를 참조할 수 있는 배열을 제공한다. 이들을 연관배열이라고 한다. 연관배열을 정의하기위해 통상적인 둥근괄호를 사용하지만, 배열명에 % 기호를 붙인다. 사람과 이들의 나이를 배열로 저장한다고 가정하자. 이 것은 다음과 같은 것이다.
%ages = ("김희선", 22,
         "김희애", 34,
         "천사", 27,
         "꼬마", "강아지 나이로 21",
         "여왕", 108);
이제 사람들의 나이를 찾기위해 다음 표현식을 사용할 수 있다.
$ages{"김희선"};		# 22를 리턴
$ages{"김희애"};		# 34를 리턴
$ages{"천사"};			# 27을 리턴
$ages{"꼬마"};			# "강아지 나이로 21"을 리턴
$ages{"여왕"};	# 108을 리턴
일반 배열과 마찬가지로 % 기호는 개개의 요소를 참조할 때 $로 변경된다(개개의 요소는 스칼라이므로). 일반배열과는 달리 참조(이 경우에 사람의 이름)는 중괄호를 사용한다. 연관배열이라는 개념은 일반배열보다 낯선개념이지만 아주 유용한 개념다. 연관배열은 연관배열을 일반배열에 할당함으로서 일반배열로 변환할 수 있다. 일반배열은 일반배열을 연관배열에 할당함으로서 연관배열로 변환할 수 있다. 이 경우 일반배열은 짝수의 배열요소를 가지고 있어야 한다.
@info = %ages;		# @info은 일반배열.
			# 이제 10개의 요소를 갖는다.
$info[5];		# 일반배열 @info로부터 27을 리턴한다.
%moreages = @info;	# %moreages는 연관배열이다.
			# 이것은 %ages와 동일하다.
연산자 연과배열은 배열요소에 어떠한 순서도 가지고 있지 않다(이들은 해쉬와 같다). 그러나 keysvalues 함수를 사용해서 차례로 모든 요소를 참조할 수 있다.
foreach $person (keys %ages)
{
	print "필자는 $person의 나이를 알고 있다.\n";
}
foreach $age (values %ages)
{
	print "$age살이다.\n";
}
keys를 호출하면 연관배열의 키의 목록을 리턴한다. values를 호출하면 연관배열의 값의 목록을 리턴한다. 이들 함수는 동일한 순서로 이들 목록를 리턴하지만 이들의 순서는 이들 요소가 입력될 때(또는 할당될 때)의 순서와 전혀 무관하다. keysvalues가 스칼라환경에서 호출되며 연관배열내의 키/값의 쌍의 수를 리턴한다. 또한 키와 값의 두 요소를 리턴하는 each도 존재한다. each가 호출될 때마다 다른 키/값의 쌍이 리턴된다.
while (($person, $age) = each(%ages))
{
	print "$person is $age\n";
}
환경변수 UNIX에서 펄 프로그램을 실행하거나 임의의 스크립트를 실행할 때 특정한 환경변수를 설정한다. 이들은 사용자의 이름을 포함하는 USER일 수도 있으며, 그래픽 화면을 전송할 화면을 지정하는 DISPLAY일 수도 있다. WWW에서 펄 CGI 스크립트를 실행할 때에도 다른 유용한 정보를 포함하는 환경변수가 존재한다. 이러한 모든 환경변수와 값은 %ENV라는 연관배열에 저장되며, 이때 키는 환경변수의 이름이다. 펄 프로그램에서 다음과 같은 것을 실행해보기 바란다.
print "$ENV{'USER'}이며 ";
print "$ENV{'DISPLAY'}를 출력으로 사용하고 있다.\n";
연습 현재 시스템에 설정되어 있는 모든 환경변수를 출력하는 프로그램을 작성하라.


다음글: 펄을 배우자 - 제 12강 서브루틴 (5967)1996-03-15
이전글: 펄을 배우자 - 제 10강 Split (7164)1996-03-13

세상사는 이야기

  • 찾아라! 아이폰 순정용 >
  • 만원대 피젯 스피너를 >
  • 망하는 길을 택한 쿠팡 >
  • 물놀이에 적당한 가성 >
  • 컴퓨터를 IPTV로 2, po >
  • 컴퓨터를 IPTV로 만들 >
  • Warning.or.kr도 우회 >
  • 한국의 100대 부자, 어 >
  • 세상을 바꾼 크롬: 크 >
  • 장난(?)으로 시작한 여 >


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