Route a command through scalar branch logic while replay shows the selected path.

dispatcher branch Branch-based dispatch avoids stored code references and keeps Perl replay scalar.

Dispatcher Branch Panel

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

my $mode = "status";
my $access = "ok";
my $handled = "";

if ($mode eq "refresh") {
    $handled = "cache:" . $mode;
} elsif ($mode eq "archive") {
    $access = "review";
    $handled = "queue:" . $mode;
} else {
    $handled = "handled:" . $mode;
}

print "mode=$mode\n";
print "access=$access\n";
print "$handled\n";
use strict;
use warnings;

my $mode = "refresh";
my $access = "ok";
my $handled = "";

if ($mode eq "refresh") {
    $handled = "cache:" . $mode;
} elsif ($mode eq "archive") {
    $access = "review";
    $handled = "queue:" . $mode;
} else {
    $handled = "handled:" . $mode;
}

print "mode=$mode\n";
print "access=$access\n";
print "$handled\n";
use strict;
use warnings;

my $mode = "archive";
my $access = "ok";
my $handled = "";

if ($mode eq "refresh") {
    $handled = "cache:" . $mode;
} elsif ($mode eq "archive") {
    $access = "review";
    $handled = "queue:" . $mode;
} else {
    $handled = "handled:" . $mode;
}

print "mode=$mode\n";
print "access=$access\n";
print "$handled\n";
  1. $mode ← status, $access ← ok, $handled ← (empty)

    4my $mode→ status = "status"; #@mode="refresh", "archive"5my $access→ ok = "ok";6my $handled→ (empty) = "";
  2. $handled ← handled:status

    12    $handled = "queue:" . $mode;13} else {14    $handled→ handled:status = "handled:" . $modestatus;15}
  3. print "mode=$mode ";

    17print "mode=$modestatus\n";18print "access=$accessok\n";19print "$handledhandled:status\n";
    outputmode=status
    access=ok
    handled:status
  1. $mode ← refresh, $access ← ok, $handled ← (empty)

    4my $mode→ refresh = "refresh";5my $access→ ok = "ok";6my $handled→ (empty) = "";
  2. $handled ← cache:refresh

    8if ($moderefresh eq "refresh") {9    $handled→ cache:refresh = "cache:" . $moderefresh;10} elsif ($mode eq "archive") {
  3. print "mode=$mode ";

    17print "mode=$moderefresh\n";18print "access=$accessok\n";19print "$handledcache:refresh\n";
    outputmode=refresh
    access=ok
    cache:refresh
  1. $mode ← archive, $access ← ok, $handled ← (empty)

    4my $mode→ archive = "archive";5my $access→ ok = "ok";6my $handled→ (empty) = "";
  2. $access ← review, $handled ← queue:archive

    9    $handled = "cache:" . $mode;10} elsif ($modearchive eq "archive") {11    $access→ review = "review";12    $handled→ queue:archive = "queue:" . $modearchive;13} else {
  3. print "mode=$mode ";

    17print "mode=$modearchive\n";18print "access=$accessreview\n";19print "$handledqueue:archive\n";
    outputmode=archive
    access=review
    queue:archive