Modules and Packages
Package Basics
A package gives subroutines a namespace so names can be organized.
package
A package is a namespace for Perl symbols such as subroutine names.
Package Basics
package_basics.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;
package Greeter;
sub greet {
my ($name) = @_;
return "Hello, $name";
}
package main;
my $name = "Perl";
my $message = Greeter::greet($name);
print "name=$name\n";
print "message=$message\n";
use strict;
use warnings;
package Greeter;
sub greet {
my ($name) = @_;
return "Hello, $name";
}
package main;
my $name = "Mira";
my $message = Greeter::greet($name);
print "name=$name\n";
print "message=$message\n";
use strict;
use warnings;
package Greeter;
sub greet {
my ($name) = @_;
return "Hello, $name";
}
package main;
my $name = "Ada";
my $message = Greeter::greet($name);
print "name=$name\n";
print "message=$message\n";
$name ← Perl
13my $name→ Perl = "Perl"; #@name="Mira", "Ada"14my $message = Greeter::greet($namePerl);$name ← Perl
6sub greet {7 my ($name→ Perl) = @_;8 return "Hello, $namePerl";9}$message ← Hello, Perl
13my $name = "Perl"; #@name="Mira", "Ada"14my $message→ Hello, Perl = Greeter::greet($namePerl);1516print "name=$namePerl\n";17print "message=$messageHello, Perl\n";outputname=Perl message=Hello, Perl
$name ← Mira
13my $name→ Mira = "Mira";14my $message = Greeter::greet($nameMira);$name ← Mira
6sub greet {7 my ($name→ Mira) = @_;8 return "Hello, $nameMira";9}$message ← Hello, Mira
13my $name = "Mira";14my $message→ Hello, Mira = Greeter::greet($nameMira);1516print "name=$nameMira\n";17print "message=$messageHello, Mira\n";outputname=Mira message=Hello, Mira
$name ← Ada
13my $name→ Ada = "Ada";14my $message = Greeter::greet($nameAda);$name ← Ada
6sub greet {7 my ($name→ Ada) = @_;8 return "Hello, $nameAda";9}$message ← Hello, Ada
13my $name = "Ada";14my $message→ Hello, Ada = Greeter::greet($nameAda);1516print "name=$nameAda\n";17print "message=$messageHello, Ada\n";outputname=Ada message=Hello, Ada