A small hash can model named arguments when a subroutine has several options.

Named Arguments

named_arguments.pl
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 = ;
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 = ;
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 = ;
my $badge = build_badge(name => "Nora", role => $role);

print "role=$role\n";
print "badge=$badge\n";
named argument A named argument pairs a key with a value so the call explains what each value means.