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

제 16강 - 조건문


펄에서도 제어에 흐름을 변경시키기위한 방법으로 조건문을 제공한다. 펄에서 제공하는 조건문은 if문과 unless문이 있다. 요약 if 문

if ( EXPRESSION ) { 		unless ( EXPRESSION ) { 	
	STATEMENTS;			STATEMENTS; 
}				}
STATEMENTS if (EXPRESSION);	STATEMENTS unless (EXPRESSION);
if-else 문

if (EXPRESSION ) { 
	# 참이면 수행
	STATEMENTS; 
} else { 
	# 거짓이면 수행
	STATEMENTS; 
}
if-elsif-else 문

if ( EXPRESSION1 ) { 
	STATEMENTS; 
} elsif( EXPRESSION2 ) { 
	STATEMENTS; 
	# 추가적인 ELSIF 문
} else { 
	STATEMENTS; 
}
EXPRESSION
블록을 수행할 조건이나 표현식. 비교연산자외에 조건연산자도 가능하다. 따라서 비교연산자(==)를 대입연산자(=)로 쓰지 않도록 주의해야 한다.
STATEMENTS
블록내에서 수행될 문장.
주의
elsif문은 elseif가 아니라 elsif이므로 주의해야 한다.
중괄호는 생략될 수 없다.
펄은 SWITCH 문을 가지고 있지 않으므로 ELSIF문이나 다른 방법을 사용해야 한다.
설명

if ($a){
    print "문자열은 공백이 아니다.\n";
}else{
    print "문자열은 공백이다.\n";
}

빈 문자열은 거짓으로 간주되므로 $a가 공백이 아니라면 첫 번째 블록이, 공백이라면 두 번째 블록이 실행된다.

if-elsif문을 사용하면 조건문 내에서 더 많은 분기를 포함하는 것도 가능하다:

if (!$a){			# !은 NOT 연산자이다.
    print "문자열은 공백이다.\n";
}elsif (length($a) == 1){	# 위가 거짓이면 이 문장이 수행된다.
    print "문자열은 하나의 문자를 가지고 있다.\n";
}elsif (length($a) == 2){	# 위의 것들이 거짓이면 이문장이 수행된다.
    print "문자열은 두개의 문자를 가지고 있다.\n";
}else{				# 위의 모든 것이 거짓이면 이문장이 수행된다.
    print "문자열은 세자 이상의 문자를 가지고 있다.\n";
}

$a가 공백인 경우 첫 번째 블록이 수행되며($a앞의 !에 주의한다), $a가 하나의 문자를 갖는다면 두 번째 블록에 2개의 문자를 갖는 다면 세 번째 블록이, 세 개 이상의 문자를 갖는다면 마지막 else 블록이 수행된다.

if문을 반대의 조건으로 수행시키기 위해 unless문을 사용할 수 있다. 연습 - 방명록

방명록 FORM(guest.html)에는 작성자의 이름, 전자우편, 홈페이지, 의견을 입력하도록 되어있다. 그러나 일반적으로 전자우편과 홈페이지는 없는 사람이 있을 수도 있으므로 이름과 의견을 검사해서 이름과 의견이 모두 있는 경우에는 방명록을 기록하고 없는 경우에는 원래의 방명록 폼을 출력하도록 guest.cgi를 변경하라.

방명록은 다음과 같은 형식으로 구성된다.

if($FORM{name} ne '' && $FORM{comment} ne '') {
	&save_guestbook;	# 앞에서 작성한 방명록을 저장하는 부분
	print "location: $guesturl\n\n";
}else {
	print "content-type: text/html\n\n";
	&guest_form;		# guest.html의 폼을 그대로 출력.
				# 단 value 속성으로 이전 값을 유지해야 함
}

&save_guestbook은 앞서 작성한 CGI에서 파일을 저장하는 부분을 의미한다. 사용자 입력이 적당한 경우 사용자 입력을 파일로 저장하고 저장된 결과를 보여주기위해 저장된 결과(guestbook.html)를 location: 헤더를 이용해서 호출하는 부분이다.

Location: 헤더의 URL을 가상 절대 경로로 지정하는 경우, 최종적인 URL은 guest.cgi가 된다. 이 경우 Ctrl-R을 누르면 같은 데이터가 반복적으로 삽입되므로 가급절 절대 URL를 사용하는 것이 좋다.

&guest_form은 방명록 폼(guest.html)을 CGI가 다시 출력하는 부분이다. 다만 방명록 폼을 다시 출력할 때에는 <INPUT> 태그의 value 속성을 이용해서 사용자 입력을 유지해야 한다.

주의: 이 방명록은 두가지의 CGI 출력(Location:, Content-Type:)을 사용하지만 실제 출력되는 것은 이들중 하나만 출력된다는 것에 주의하기바란다.



다음글: 제 17강 - 문자열 일치 (13059)1996-04-17
이전글: 제 15강 - 제어구조 (5842)1996-04-15

세상사는 이야기

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


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