# 조건문

PERL에는 boolean 형식의 데이터가 없으며, 숫자 0, 문자열 '0', 빈 문자열, 빈 리스트, 값이 할당되지 않은(undefined) 변수의 경우에는 거짓으로, 그 외의 경우에는 참으로 판단됩니다.

## if

실행문 뒤에 if를 쓸 수도 있습니다.

```perl
$a = 1;
print "Hello\n" if ($a == 1);
```

## if … elsif … else …

실행문이 한 줄인 경우라도 중괄호가 반드시 필요합니다.

```perl
if ($condition){
    print "true\n";
} else {
    print "false\n";
}
```

## unless

```perl
$a = 1;
print "Hello\n" unless ($a == 1);
```

## unless … elsif … else …

unless는 조건식이 거짓일 때 처리됩니다.

```perl
$var = -10;

unless ($var){
    print "false\n";
} elsif ($var>=0) {
    print "positive\n";
} else {
    print "negative\n";
}
# negative
```

## 조건 연산자

```perl
$var = 10;
$value = ($var>=0) ? "Positive" : "Negative";
print "$value\n";
```

## given … when … default …

```perl
use v5.10; # given문을 사용하려면 이렇게 선언해야 합니다.
no warnings 'experimental';

$var = 2;
given ($var){
    when (1) {
        print "one\n";
    }
    when (2) {
        print "two\n";
    }
    default {
        print "many\n";
    }
}
```

```perl
use v5.12;

my $var = 2;
my $value;
given ($var){
    $value = 'One' when (1);
    $value = 'Two' when (2);
    default {
        $value = 'Many';
    }
}
print "$value\n";
```

```perl
use v5.12;

my $var = 'a';
my $value;
given ($var){
    $value = 'Number' when /\d/; # when절에 정규표현식을 사용할 수도 있습니다.
    $value = 'Character' when /[a-zA-Z]/;
    default {
        $value = 'Unknown';
    }
}
print "$value\n";
```

## switch .. case .. else ..

switch 구문은 Switch 모듈의 일부이므로 이를 사용하려면 `use Switch;`를 선언해야합니다.

```perl
use Switch;

switch($var) {
    case 1 {
        print "One";
    }
    case "a" {
        print "string a";
    }
    else {
        print "something else.";
    }
}
```