조건-if, unless

위의 예제 mytype2.pl을 보면 아래와 같은 조건부 실행 명령이 있습니다.

if( $#ARGV < 0 )
  { die "Supply a file name, please.\n"; }
그 의미는 만약 if다음의 ( )안에 있는 내용이 참이면, 즉 $#ARGV가 0보다 작을 경우에는, { }로 쌓여 있는 블록 전체를 실행시키고, 그렇지 않으면(거짓이면) 실행시키지 않는다는 것입니다.

if의 형식은 다음과 같습니다.

if ( 식 )
{
  do_something;
}
else  # '식'이 거짓일 경우 블록을 실행. else는 없을 수도 있음.
{
  do_others;
}

또는,

if ( 식 )
{
  do_something;
}
elsif( 다른 식 ) # elsif는 몇개가 들어가도 좋음.
{           # 주의: elseif라고 하지 않도록 유의할 것.
  do_anything;   # '식'이 거짓이고 '다른 식'이 참일 때 실행.
}
else
{
  do_others;
}
if의 반대 개념으로 unless가 있습니다. 즉, 조건식에 거짓으로 판명이 될 경우에만 블록내의 명령(들)을 실행시킵니다.
@a = 3;
unless ( @a == 5 )
{
  print "Hey\n";
}
위에서 Hey는 출력이 될까요 안될까요 ???

간단한 명령의 실행으로 이렇게 하는 수도 있습니다.

print "Yes\n" if $answer == 3;
print "Shut up !\n" unless $mouth eq "quiet";
조건식과 명령문의 순서가 위에 보여드린 것과는 구성이 조금 다르지요 ? 그러나 내용은 다르지 않습니다.

또, 연산자 이야기에서 설명한 것처럼

$answer == 3  && print "Yes\n";
$mouth eq "quiet"  || print "Shut up !\n";
와 같이 if, unless가 아닌 &&, ||를 사용할 수도 있습니다.
이전 | 목록 | 다음
Comments