Use a package as the namespace for related behavior.

package-pattern Packages group related routines under a stable name.

Package Pattern Basics

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

package Greeter;

sub label {
    my ($name) = @_;
    return "hello:$name";
}

package main;

my $name = "Perl";
my $message = Greeter::label($name);

print "name=$name\n";
print "message=$message\n";
use strict;
use warnings;

package Greeter;

sub label {
    my ($name) = @_;
    return "hello:$name";
}

package main;

my $name = "Mira";
my $message = Greeter::label($name);

print "name=$name\n";
print "message=$message\n";
use strict;
use warnings;

package Greeter;

sub label {
    my ($name) = @_;
    return "hello:$name";
}

package main;

my $name = "Ada";
my $message = Greeter::label($name);

print "name=$name\n";
print "message=$message\n";
  1. $name ← Perl

    13my $name→ Perl = "Perl"; #@name="Mira", "Ada"14my $message = Greeter::label($namePerl);
  2. $name ← Perl

    6sub label {7    my ($name→ Perl) = @_;8    return "hello:$namePerl";9}
  3. $message ← hello:Perl

    13my $name = "Perl"; #@name="Mira", "Ada"14my $message→ hello:Perl = Greeter::label($namePerl);1516print "name=$namePerl\n";17print "message=$messagehello:Perl\n";
    outputname=Perl
    message=hello:Perl
  1. $name ← Mira

    13my $name→ Mira = "Mira";14my $message = Greeter::label($nameMira);
  2. $name ← Mira

    6sub label {7    my ($name→ Mira) = @_;8    return "hello:$nameMira";9}
  3. $message ← hello:Mira

    13my $name = "Mira";14my $message→ hello:Mira = Greeter::label($nameMira);1516print "name=$nameMira\n";17print "message=$messagehello:Mira\n";
    outputname=Mira
    message=hello:Mira
  1. $name ← Ada

    13my $name→ Ada = "Ada";14my $message = Greeter::label($nameAda);
  2. $name ← Ada

    6sub label {7    my ($name→ Ada) = @_;8    return "hello:$nameAda";9}
  3. $message ← hello:Ada

    13my $name = "Ada";14my $message→ hello:Ada = Greeter::label($nameAda);1516print "name=$nameAda\n";17print "message=$messagehello:Ada\n";
    outputname=Ada
    message=hello:Ada