Error Handling and Defensive Perl
Defined Checks
Check whether a value exists before using it.
defined-check
`defined` distinguishes a missing value from a present scalar.
Defined Checks
defined_checks.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $maybe = "ready";
my $status = defined $maybe ? "present" : "missing";
my $value = defined $maybe ? $maybe : "fallback";
print "status=$status\n";
print "value=$value\n";
use strict;
use warnings;
my $maybe = undef;
my $status = defined $maybe ? "present" : "missing";
my $value = defined $maybe ? $maybe : "fallback";
print "status=$status\n";
print "value=$value\n";
use strict;
use warnings;
my $maybe = "done";
my $status = defined $maybe ? "present" : "missing";
my $value = defined $maybe ? $maybe : "fallback";
print "status=$status\n";
print "value=$value\n";
$maybe ← ready, $status ← present, $value ← ready
4my $maybe→ ready = "ready"; #@maybe=undef, "done"5my $status→ present = defined $maybeready ? "present" : "missing";6my $value→ ready = defined $maybeready ? $maybe : "fallback";78print "status=$statuspresent\n";9print "value=$valueready\n";outputstatus=present value=ready
$maybe ← (empty), $status ← missing, $value ← fallback
4my $maybe→ (empty) = undef;5my $status→ missing = defined $maybe(empty) ? "present" : "missing";6my $value→ fallback = defined $maybe(empty) ? $maybe : "fallback";78print "status=$statusmissing\n";9print "value=$valuefallback\n";outputstatus=missing value=fallback
$maybe ← done, $status ← present, $value ← done
4my $maybe→ done = "done";5my $status→ present = defined $maybedone ? "present" : "missing";6my $value→ done = defined $maybedone ? $maybe : "fallback";78print "status=$statuspresent\n";9print "value=$valuedone\n";outputstatus=present value=done