Subroutines and Arguments
Named Arguments
A small hash can model named arguments when a subroutine has several options.
named argument
A named argument pairs a key with a value so the call explains what each value means.
Named Arguments
named_arguments.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
sub build_badge {
my (%args) = @_;
my $name = $args{name};
my $role = $args{role};
my $badge = "$name:$role";
return $badge;
}
my $role = "reader";
my $badge = build_badge(name => "Nora", role => $role);
print "role=$role\n";
print "badge=$badge\n";
use strict;
use warnings;
sub build_badge {
my (%args) = @_;
my $name = $args{name};
my $role = $args{role};
my $badge = "$name:$role";
return $badge;
}
my $role = "editor";
my $badge = build_badge(name => "Nora", role => $role);
print "role=$role\n";
print "badge=$badge\n";
use strict;
use warnings;
sub build_badge {
my (%args) = @_;
my $name = $args{name};
my $role = $args{role};
my $badge = "$name:$role";
return $badge;
}
my $role = "admin";
my $badge = build_badge(name => "Nora", role => $role);
print "role=$role\n";
print "badge=$badge\n";
$role ← reader
12my $role→ reader = "reader"; #@role="editor", "admin"13my $badge = build_badge(name => "Nora", role => $rolereader);%args ← 2, $name ← Nora, $role ← reader, $badge ← Nora:reader
4sub build_badge {5 my (%args→ 2) = @_;6 my $name→ Nora = $args{name};7 my $role→ reader = $args{role};8 my $badge→ Nora:reader = "$nameNora:$rolereader";9 return $badgeNora:reader;10}$badge ← Nora:reader
12my $role = "reader"; #@role="editor", "admin"13my $badge→ Nora:reader = build_badge(name => "Nora", role => $rolereader);1415print "role=$rolereader\n";16print "badge=$badgeNora:reader\n";outputrole=reader badge=Nora:reader
$role ← editor
12my $role→ editor = "editor";13my $badge = build_badge(name => "Nora", role => $roleeditor);%args ← 2, $name ← Nora, $role ← editor, $badge ← Nora:editor
4sub build_badge {5 my (%args→ 2) = @_;6 my $name→ Nora = $args{name};7 my $role→ editor = $args{role};8 my $badge→ Nora:editor = "$nameNora:$roleeditor";9 return $badgeNora:editor;10}$badge ← Nora:editor
12my $role = "editor";13my $badge→ Nora:editor = build_badge(name => "Nora", role => $roleeditor);1415print "role=$roleeditor\n";16print "badge=$badgeNora:editor\n";outputrole=editor badge=Nora:editor
$role ← admin
12my $role→ admin = "admin";13my $badge = build_badge(name => "Nora", role => $roleadmin);%args ← 2, $name ← Nora, $role ← admin, $badge ← Nora:admin
4sub build_badge {5 my (%args→ 2) = @_;6 my $name→ Nora = $args{name};7 my $role→ admin = $args{role};8 my $badge→ Nora:admin = "$nameNora:$roleadmin";9 return $badgeNora:admin;10}$badge ← Nora:admin
12my $role = "admin";13my $badge→ Nora:admin = build_badge(name => "Nora", role => $roleadmin);1415print "role=$roleadmin\n";16print "badge=$badgeNora:admin\n";outputrole=admin badge=Nora:admin