Modules and Packages
Namespace Separation
Different packages can use the same subroutine name without colliding.
Namespace Separation
namespace_separation.pl
use strict;
use warnings;
package Metric;
sub label {
my ($size) = @_;
return "$size cm";
}
package Imperial;
sub label {
my ($size) = @_;
return "$size in";
}
package main;
my $system = ;
my $size = 5;
my $label;
if ($system eq "metric") {
$label = Metric::label($size);
} else {
$label = Imperial::label($size);
}
print "system=$system\n";
print "label=$label\n";
use strict;
use warnings;
package Metric;
sub label {
my ($size) = @_;
return "$size cm";
}
package Imperial;
sub label {
my ($size) = @_;
return "$size in";
}
package main;
my $system = ;
my $size = 5;
my $label;
if ($system eq "metric") {
$label = Metric::label($size);
} else {
$label = Imperial::label($size);
}
print "system=$system\n";
print "label=$label\n";
namespace separation
Namespace separation lets each package own its names independently.