Error Handling and Defensive Perl
Input Validation
Validate a numeric value before accepting it.
input-validation
Validation rejects invalid input before later code depends on it.
Input Validation
input_validation.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
my $age = 17;
my $status;
if ($age < 0) {
$status = "invalid";
} elsif ($age < 18) {
$status = "minor";
} else {
$status = "adult";
}
print "age=$age\n";
print "status=$status\n";
use strict;
use warnings;
my $age = -1;
my $status;
if ($age < 0) {
$status = "invalid";
} elsif ($age < 18) {
$status = "minor";
} else {
$status = "adult";
}
print "age=$age\n";
print "status=$status\n";
use strict;
use warnings;
my $age = 21;
my $status;
if ($age < 0) {
$status = "invalid";
} elsif ($age < 18) {
$status = "minor";
} else {
$status = "adult";
}
print "age=$age\n";
print "status=$status\n";
$age ← 17, $status ← (empty)
4my $age→ 17 = 17; #@age=-1, 215my $status→ (empty);$status ← minor
8 $status = "invalid";9} elsif ($age17 < 18) {10 $status→ minor = "minor";11} else {print "age=$age ";
15print "age=$age17\n";16print "status=$statusminor\n";outputage=17 status=minor
$age ← -1, $status ← (empty)
4my $age→ -1 = -1;5my $status→ (empty);$status ← invalid
7if ($age-1 < 0) {8 $status→ invalid = "invalid";9} elsif ($age < 18) {print "age=$age ";
15print "age=$age-1\n";16print "status=$statusinvalid\n";outputage=-1 status=invalid
$age ← 21, $status ← (empty)
4my $age→ 21 = 21;5my $status→ (empty);$status ← adult
10 $status = "minor";11} else {12 $status→ adult = "adult";13}print "age=$age ";
15print "age=$age21\n";16print "status=$statusadult\n";outputage=21 status=adult