An unless block runs only when a condition is false, which makes it useful for guard checks.

Unless Guard

unless_guard.pl
use strict;
use warnings;

my $name = ;
my $message;

unless (length $name) {
    $message = "missing name";
} else {
    $message = "hello $name";
}

print "name=$name\n";
print "message=$message\n";
use strict;
use warnings;

my $name = ;
my $message;

unless (length $name) {
    $message = "missing name";
} else {
    $message = "hello $name";
}

print "name=$name\n";
print "message=$message\n";
use strict;
use warnings;

my $name = ;
my $message;

unless (length $name) {
    $message = "missing name";
} else {
    $message = "hello $name";
}

print "name=$name\n";
print "message=$message\n";
guard A guard handles a special case before the main path continues.