Package-Based Object Patterns
Package Pattern Basics
Use a package as the namespace for related behavior.
package-pattern
Packages group related routines under a stable name.
Package Pattern Basics
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";
$name ← Perl
13my $name→ Perl = "Perl"; #@name="Mira", "Ada"14my $message = Greeter::label($namePerl);$name ← Perl
6sub label {7 my ($name→ Perl) = @_;8 return "hello:$namePerl";9}$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
$name ← Mira
13my $name→ Mira = "Mira";14my $message = Greeter::label($nameMira);$name ← Mira
6sub label {7 my ($name→ Mira) = @_;8 return "hello:$nameMira";9}$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
$name ← Ada
13my $name→ Ada = "Ada";14my $message = Greeter::label($nameAda);$name ← Ada
6sub label {7 my ($name→ Ada) = @_;8 return "hello:$nameAda";9}$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