Namespaces


Perl has a solution to this problem using namespaces, also called packages.


examples/modules/namespaces.pl
#!/usr/bin/perl
use strict;
use warnings;

package Calc;
use strict;
use warnings;

sub add {
    my $total = 0;
    $total += $_ for (@_);
    return $total;
}


package main;

print Calc::add(3, 4), "\n";

# add(3, 4);
# would die with:
# Undefined subroutine &main::add called
#   at examples\modules\namespaces.pl line 20.