A main program can choose which package helper to call without importing external files.

Dispatch Helpers

dispatch_helpers.pl
use strict;
use warnings;

package TextTools;

sub shout {
    my ($text) = @_;
    return uc $text;
}

sub whisper {
    my ($text) = @_;
    return lc $text;
}

package main;

my $mode = ;
my $text = "Perl";
my $result;

if ($mode eq "shout") {
    $result = TextTools::shout($text);
} else {
    $result = TextTools::whisper($text);
}

print "mode=$mode\n";
print "result=$result\n";
use strict;
use warnings;

package TextTools;

sub shout {
    my ($text) = @_;
    return uc $text;
}

sub whisper {
    my ($text) = @_;
    return lc $text;
}

package main;

my $mode = ;
my $text = "Perl";
my $result;

if ($mode eq "shout") {
    $result = TextTools::shout($text);
} else {
    $result = TextTools::whisper($text);
}

print "mode=$mode\n";
print "result=$result\n";
dispatch Dispatch chooses which helper should handle a value.