Perl 제어문 if 조건문 for 반복문 사용 방법 예제

조건 제어문인 if문과 반복문인 for문에 대해서 알아보겠습니다.

 

참과 거짓

제어문으로 조건식이나 반복문을 학습하기 전엔 참(true)과 거짓(false)에 대해서 살펴보겠습니다.

참과 거짓의 정의는 다음과 같습니다.

  거짓 숫자 0
 문자열 “0”
 공백문자열 “”
 미정의 값 
  참 위 외의 것

 

조금 더 구체적으로 보면은 다음과 같습니다.

0 숫자 0이므로 거짓
 1 숫자 1이므로 참
 -1 숫자 0이 아니므로 참
 3-3 계산 결과 0이므로 거짓
 0.0 숫자 0이므로 거짓
 “0” 문자열 0이므로 거짓
 “0.0” 문자열 0.0과 0은 다르므로 참
 A 문자열 A는 참
 “” 공백 문자열이므로 거짓
 undef() 미정의 값을 반환하는 함수이므로 거짓

 

조건식

조건식이란 [만약 ~ 이라면…]라는 조건 구문을 정의하는 것으로 if문과 unless문 2개가 있습니다.

조건식은 보통 비교 연산자를 사용해서 조건을 정의 힙니다.

unless문은 if문의 반대 의미를 가지고 있습니다.

구문 if (조건식) { 실행 A}
 elsif (조건 B) {실행 B}
 else {실행 C}
 내용 만약, [조건 A]가 참이라면 [실행 A]를 실행.
 만약, [조건 A]가 거짓이고, [조건 B]가 참이라면 [실행 B]를 실행.
 만약, [조건 A]와 [조건 B]가 거짓이라면 [실행 C]를 실행.

 

코드 예

if ($size eq "big") {
	print "대";
} elsif ($size eq "middle") {
	print "중";
} else {
	print "소";
}

 

반복문

반복문은 어느 조건의 의해 처리를 반복 실행하는 것으로 다름 6개의 구문이 있습니다.

구문명구문내용
 while문 while ( 조건 ) { 실행 } 「조건」이 참인 동안「실행」을 실행
 until문 until ( 조건 ) { 실행 } 「조건」이 거짓인 동안「실행」을 실행
 do {} while문 do { 실행 } while ( 조건 ) 「실행」을 한 번 실행하고、조건이 참인 동안「식」을 실행
 do {} until문 do { 실행 } until ( 조건 ) 「실행」을 한 번 실행하고、조건이 거짓인 동안「식」을 실행
 for문 for ( 초기화 조건식 증감식 ) { 실행 } 「조건식」이 참이면 「실행」을 실행하고 、다음으로 「증감식」을 실행
 foreach문 foreach 제어변수 ( 리스트값 ) { 실행 } 「리스트값」요소를 순서대로 「제어 변수」에 설정하고 、「실행」을 실행

 

while문

$i = 3;
while ($i > 0) {
	print "카운트 : $i \n";
	$i--;
}

 

> 카운트 : 3 
> 카운트 : 2 
> 카운트 : 1  

 

until문

until은 while과 조건이 반대입니다.

$i = 3;
until ($i <= 0) {
	print "카운트 : $i \n";
	$i--;
}

 

> 카운트 : 3 
> 카운트 : 2 
> 카운트 : 1  

 

 

do {} while문

while문은 블록 안을 실행하지 전에 조건은 판단하지만,

do {} while문은 블록 안을 한 번 실행한 뒤, 조건을 판단한는것이 while문과 다릅니다.

$i = 3;
do {
	print "카운트 : $i \n";
	$i--;
} while ($i > 0);

 

> 카운트 : 3 
> 카운트 : 2 
> 카운트 : 1  

 

do {} untill문

do {} untill문은 do {} while문과 조건이 반대입니다.

$i = 3;
do {
	print "카운트 : $i \n";
	$i--;
}until ($i <= 0);

 

> 카운트 : 3 
> 카운트 : 2 
> 카운트 : 1  

 

for문

for ( $i = 3; $i > 0; $i-- ) {
	print "카운트 : $i \n";
}

 

> 카운트 : 3 
> 카운트 : 2 
> 카운트 : 1  

 

foreach문

foreach $i (3, 2, 1) {
	print "카운트 : $i \n";
}

 

> 카운트 : 3 
> 카운트 : 2 
> 카운트 : 1  

 

반복문 제어

반복문을 사용할 때, 반복문은 제어할 수 있는 연산자로 3개가 있습니다.

연산자내용
 next 반복을 스킵
 last 반복을 종료
 redo 반복을 맨 위로 올려서 다시 시작

 

next연산자

foreach $i (5,4,3,2,1){
	if($i == 3) {
		next;
	}
	print "카운트 : $i \n";
}

 

> 카운트 : 5 
> 카운트 : 4 
> 카운트 : 2 
> 카운트 : 1 

 

last연산자

foreach $i (5,4,3,2,1){
	if($i == 3) {
		last;
	}
	print "카운트 : $i \n";
}

 

> 카운트 : 5 
> 카운트 : 4 

 

redo연산자

잘못 사용할 경우 무한 반복이 될 수도 있으니 사용에 주의해야 합니다.

$n = 0;
foreach $i (1 .. 5){
	print "카운트 : $i \n";
	
	if($i == 3) {
		$n++;
		
		# 다시시작이 2번이상의 경우 종료
		if($n >= 2){
			last;
		}
		
		# $i가 3이 되면 반복문은 다시 시작
		redo;
	}
}

 

> 카운트 : 1 
> 카운트 : 2 
> 카운트 : 3 
> 카운트 : 3 

 

삼항 연산자

삼항 연산자는 if 조건식을 단축해서(1행으로) 사용하는 방법입니다.

  구문
  [조건식] ? [참일 경우] : [거짓일 경우]
$age = 18;
print $age >= 20 ? "성인" : "미성년";

 

> 미성년

 

그리고 if ~ elsif ~ else 식으로도 가능합니다.

$point = 82;
$result =
	$point >= 90 ? 'A' :
	$point >= 80 ? 'B' :
	$point >= 70 ? 'C' :
	'F';

print "성적은 $result 입니다.";

 

> 성적은 B 입니다.

댓글