날짜: 1996-04-06 | 글쓴이: 도아 | 7669 번 | 프린트 | 메일로보내기

제 6강 - 리스트


펄의 강력함은 내장된 데이타 형과 이들을 처리하는 펄 자체의 능력에 의존한다. 리스트는 순서를 갖는 스칼라의 집합이며 리스트때문에 사용자는 스칼라 변수를 보다 복잡한 형식으로 사용할 수 있다. 리스트는 프로그램 메모리로 부터 동적으로 할당, 제거된다. 리스트 각각의 요소는 리스트의 위치에 따라 정수(배열첨자)로 참조할 수있다. 첫 번 배열첨자는 C와 마찬가지로 "0"으로 시작한다. 요약

( )(괄호)
리스트 생성자
,(쉼표)
쉼표는 리스트의 각 요소를 분리하는데 사용된다.
[ ](대괄호)
대괄호는 리스트를 참조하는데 사용된다.

($sec, $min, $hour) = (localtime(time))[0..2];
print "$hour시 $min분 $sec초\n";
리스트 연산자

펄에서는 리스트에대해 두 개의 연산자를 제공한다.

x
리스트를 지정된 횟 수많큼 반복.
..
리스트의 범위를 지정

@nums1 = (1..5) x 3;
@nums2 = @nums1 x 3;
print "@nums1\n@nums2\n";
함수의 사용형식

펄은 많은 내장 함수를 가지고 있다. 내장 함수 각각에대한 설명은 man perlfunc를 이용해서 참조하기로 하고 여기서는 간단히 이 함수들의 사용형식에대해 설명하겠다.

펄의 함수들은 함수 고유의 이름(print, chop, close 등)에의해 구분된다. 명확성을 위해 함수의 매개변수들은 괄호내에 쉼표로 분리된 리스트로 제공된다. 쉼표는 반듯이 필요하지만, 괄호는 종종 사용하지 않을 수도 있다.

print("길이: " ,length("안녕~~. 잘 지내보자")); 
# 이 문장은 다음 문장과 동일한 결과를 출력한다.
print "길이: ", length "안녕~~. 잘 지내보자"; 

다른 언어에 익숙한 사람들에게 두번째 예는 다소 혼란스러울 것이다. 그러나 펄에서는 관례적으로 print 문만은 괄호를 사용하지 않고 있다. 혼란을 막기위해 모든 함수에 괄호를 사용할 수도 있으며 필요에 따라 생략할 수도 있다.

그러나 한가지 주의할 것은 괄호를 사용하는 경우에 함수이름과 괄호를 붙여써야 한다. 함수명과 괄호사이에 공백이 포함되면 이때의 괄호는 함수의 인자를 구분하기위한 것이 아니라 연산자의 우선순위를 높이기위해 사용되는 것으로 간주되어 예상치 못한 결과를 초래한다.

print 1+2+3;		# 결과: 6
print(1+2) + 3;		# 결과: 3
print (1+2)+3;		# 결과: 3
print +(1+2)+3;		# 결과: 6
print ((1+2)+3);	# 결과: 6
리스트 관련 함수 sort(LIST)

인자로 받은 LIST를 정렬한 후, 정렬한 리스트를 리턴한다.

($a, $b, $c, $d) = sort("꽹과리","징","북","장구");
print "$a, $b, $c, $d\n";
# 결과는 꽹과리, 북, 장구, 징
reverse(LIST)

인자로 받은 LIST를 역으로 정렬한 뒤, 정렬한 리스트를 리턴한다.

($a, $b, $c, $d) = reverse("꽹과리","징","북","장구");
print "$a, $b, $c, $d\n";
# 결과는 장구, 북, 징, 꽹과리
join(EXPR, LIST)

LIST의 각 요소를 EXPR로 결합한 후, 결합한 결과(문자열)을 리턴

$join = join(':', "꽹과리","징","북","장구");
print "$join\n";
# 결과는 꽹과리:징:북:장구
split(/PATTERN/,EXPR, LIMIT)

LIMIT를 PATTERN으로 나누고 나누어진 부분 문자열의 배열을 리턴한다.

$join = '꽹과리:징:북:장구';
($a, $b, $c, $d) = split(':', $join);
print "$a, $b, $c, $d\n";
# 결과는 꽹과리, 징, 북, 장구
연습 - 방명록

사용자의 입력이 화면으로 출력하도록 guest.cgi를 변경하라. 사용자의 입력은 guest.html의 method가 GET인 경우

$query = $ENV{'QUERY_STRING'};

를 통해 읽을 수 있으며 POST인 경우

$query = <STDIN>;

을 통해 읽을 수 있다.



다음글: 제 7강 - 배열 (7567)1996-04-07
이전글: 제 5강 - 스칼라 변수 (12729)1996-04-05

세상사는 이야기

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


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