Collect input fields into a stable label.

label-factory A factory-style routine can gather values and return a formatted label.

Label Factory

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

package UserRecord;

sub make_label {
    my ($name, $role) = @_;
    return "user:$name:$role";
}

package main;

my $role = "reader";
my $name = "Nia";
my $label = UserRecord::make_label($name, $role);

print "name=$name\n";
print "role=$role\n";
print "label=$label\n";
use strict;
use warnings;

package UserRecord;

sub make_label {
    my ($name, $role) = @_;
    return "user:$name:$role";
}

package main;

my $role = "editor";
my $name = "Nia";
my $label = UserRecord::make_label($name, $role);

print "name=$name\n";
print "role=$role\n";
print "label=$label\n";
use strict;
use warnings;

package UserRecord;

sub make_label {
    my ($name, $role) = @_;
    return "user:$name:$role";
}

package main;

my $role = "admin";
my $name = "Nia";
my $label = UserRecord::make_label($name, $role);

print "name=$name\n";
print "role=$role\n";
print "label=$label\n";
  1. $role ← reader, $name ← Nia

    13my $role→ reader = "reader"; #@role="editor", "admin"14my $name→ Nia = "Nia";15my $label = UserRecord::make_label($nameNia, $rolereader);
  2. $name ← Nia, $role ← reader

    6sub make_label {7    my ($name→ Nia, $role→ reader) = @_;8    return "user:$nameNia:$rolereader";9}
  3. $label ← user:Nia:reader

    14my $name = "Nia";15my $label→ user:Nia:reader = UserRecord::make_label($nameNia, $rolereader);1617print "name=$nameNia\n";18print "role=$rolereader\n";19print "label=$labeluser:Nia:reader\n";
    outputname=Nia
    role=reader
    label=user:Nia:reader
  1. $role ← editor, $name ← Nia

    13my $role→ editor = "editor";14my $name→ Nia = "Nia";15my $label = UserRecord::make_label($nameNia, $roleeditor);
  2. $name ← Nia, $role ← editor

    6sub make_label {7    my ($name→ Nia, $role→ editor) = @_;8    return "user:$nameNia:$roleeditor";9}
  3. $label ← user:Nia:editor

    14my $name = "Nia";15my $label→ user:Nia:editor = UserRecord::make_label($nameNia, $roleeditor);1617print "name=$nameNia\n";18print "role=$roleeditor\n";19print "label=$labeluser:Nia:editor\n";
    outputname=Nia
    role=editor
    label=user:Nia:editor
  1. $role ← admin, $name ← Nia

    13my $role→ admin = "admin";14my $name→ Nia = "Nia";15my $label = UserRecord::make_label($nameNia, $roleadmin);
  2. $name ← Nia, $role ← admin

    6sub make_label {7    my ($name→ Nia, $role→ admin) = @_;8    return "user:$nameNia:$roleadmin";9}
  3. $label ← user:Nia:admin

    14my $name = "Nia";15my $label→ user:Nia:admin = UserRecord::make_label($nameNia, $roleadmin);1617print "name=$nameNia\n";18print "role=$roleadmin\n";19print "label=$labeluser:Nia:admin\n";
    outputname=Nia
    role=admin
    label=user:Nia:admin