Validate a simple name before using it.

argument-validation Validation checks whether input follows the shape a command expects. The result can be a plain status string instead of an exception.

Argument Validation

style
argument_validation.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;

my $style = "clean";
my $name = "report";

if ($style eq "slash") {
    $name = "bad/slash";
} elsif ($style eq "empty") {
    $name = "";
}

my $valid = $name =~ /^[A-Za-z0-9_]+$/ ? 1 : 0;
my $status = $valid ? "accepted" : "rejected";

print "style=$style\n";
print "name=$name\n";
print "status=$status\n";
use strict;
use warnings;

my $style = "slash";
my $name = "report";

if ($style eq "slash") {
    $name = "bad/slash";
} elsif ($style eq "empty") {
    $name = "";
}

my $valid = $name =~ /^[A-Za-z0-9_]+$/ ? 1 : 0;
my $status = $valid ? "accepted" : "rejected";

print "style=$style\n";
print "name=$name\n";
print "status=$status\n";
use strict;
use warnings;

my $style = "empty";
my $name = "report";

if ($style eq "slash") {
    $name = "bad/slash";
} elsif ($style eq "empty") {
    $name = "";
}

my $valid = $name =~ /^[A-Za-z0-9_]+$/ ? 1 : 0;
my $status = $valid ? "accepted" : "rejected";

print "style=$style\n";
print "name=$name\n";
print "status=$status\n";
  1. $style ← clean, $name ← report, $valid ← 1, $status ← accepted

    4my $style→ clean = "clean"; #@style="slash", "empty"5my $name→ report = "report";67if ($style eq "slash") {8    $name = "bad/slash";9} elsif ($style eq "empty") {10    $name = "";11}1213my $valid→ 1 = $namereport =~ /^[A-Za-z0-9_]+$/ ? 1 : 0;14my $status→ accepted = $valid1 ? "accepted" : "rejected";1516print "style=$styleclean\n";17print "name=$namereport\n";18print "status=$statusaccepted\n";
    outputstyle=clean
    name=report
    status=accepted
  1. $style ← slash, $name ← report

    4my $style→ slash = "slash";5my $name→ report = "report";
  2. $name ← bad/slash

    7if ($styleslash eq "slash") {8    $name→ bad/slash = "bad/slash";9} elsif ($style eq "empty") {
  3. $valid ← 0, $status ← rejected

    13my $valid→ 0 = $namebad/slash =~ /^[A-Za-z0-9_]+$/ ? 1 : 0;14my $status→ rejected = $valid0 ? "accepted" : "rejected";1516print "style=$styleslash\n";17print "name=$namebad/slash\n";18print "status=$statusrejected\n";
    outputstyle=slash
    name=bad/slash
    status=rejected
  1. $style ← empty, $name ← report

    4my $style→ empty = "empty";5my $name→ report = "report";
  2. $name ← (empty)

    8    $name = "bad/slash";9} elsif ($styleempty eq "empty") {10    $name→ (empty) = "";11}
  3. $valid ← 0, $status ← rejected

    13my $valid→ 0 = $name(empty) =~ /^[A-Za-z0-9_]+$/ ? 1 : 0;14my $status→ rejected = $valid0 ? "accepted" : "rejected";1516print "style=$styleempty\n";17print "name=$name(empty)\n";18print "status=$statusrejected\n";
    outputstyle=empty
    name=
    status=rejected