Files
perl-examples/Writerside/topics/Condition.md
2024-06-21 14:57:07 +09:00

2.0 KiB

조건문

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

if

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

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

if … elsif … else …

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

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

unless

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

unless … elsif … else …

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

$var = -10;

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

조건 연산자

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

given … when … default …

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";
    }
}
use v5.12;

my $var = 2;
my $value;
given ($var){
    $value = 'One' when (1);
    $value = 'Two' when (2);
    default {
        $value = 'Many';
    }
}
print "$value\n";
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;를 선언해야합니다.

use Switch;

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