Validate a numeric value before accepting it.

input-validation Validation rejects invalid input before later code depends on it.

Input Validation

age
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";
  1. $age ← 17, $status ← (empty)

    4my $age→ 17 = 17; #@age=-1, 215my $status→ (empty);
  2. $status ← minor

    8    $status = "invalid";9} elsif ($age17 < 18) {10    $status→ minor = "minor";11} else {
  3. print "age=$age ";

    15print "age=$age17\n";16print "status=$statusminor\n";
    outputage=17
    status=minor
  1. $age ← -1, $status ← (empty)

    4my $age→ -1 = -1;5my $status→ (empty);
  2. $status ← invalid

    7if ($age-1 < 0) {8    $status→ invalid = "invalid";9} elsif ($age < 18) {
  3. print "age=$age ";

    15print "age=$age-1\n";16print "status=$statusinvalid\n";
    outputage=-1
    status=invalid
  1. $age ← 21, $status ← (empty)

    4my $age→ 21 = 21;5my $status→ (empty);
  2. $status ← adult

    10    $status = "minor";11} else {12    $status→ adult = "adult";13}
  3. print "age=$age ";

    15print "age=$age21\n";16print "status=$statusadult\n";
    outputage=21
    status=adult