Conditional statements

Conditional statements allow you change the flow of the code. Conditional statements operate with Boolean values that you've learned in a previous chapter and include if/else/elsif and unless.

When the result of expression in the brackets is true than the block surrounded by curly brackets is evaluated:

if (1 == 1) {
    say 'True';
}

if (1 == 0) {
    say 'False';
}

When you want to do something when the expression is false you can use else:

if (0) {
    say 'True';
}
else {
    say 'False';
}

When you want to check the expression again you can use elsif:

my $x = 1;

if ($x == 0) {
    say 'x is zero';
} elsif ($x < 0) {
    say 'x is less than zero';
} else {
    say 'x is more than zero';
}

There is also a short form for if statement:

my $x = 5;
say 'True' if $x > 0;

unless is an opposite to if where not the true value determines whether the block is evaluated but the false value.

my $x = 5;
say 'True' unless $x == 0;

Which is the same as:

my $x = 5;
say 'True' if !($x == 0);

As you already know in Perl the truth values is everything that is not zero, so comparizon to 0 usually is not needed:

my $x = 5;
say 'True' unless $x;

Exercise

Fix this code so it prints 'Hello' instead of 'Bye' by using logical operator and without changing $x value.

my $x = 0;

if ($x) {
    say 'Hello';
}
else {
    say 'Bye';
}