#######
package Modulino::A;
use strict;
use Exporter qw(import);
# buy() will be useful to others...
our @EXPORT_OK = qw( buy );
__PACKAGE__->run(@ARGV) unless caller;
sub run {
my ($class, $arg) = (@_);
$class->perform_modulino_specific_stuff;
buy($arg);
}
sub perform_modulino_specific_stuff {
my $class = shift;
print "[special stuff for Modulino::As]\n";
}
sub buy {
print "[very useful purchasing algorithm to buy ", $_[0], "]\n";
}
#######
####
package Modulino::B;
use base qw( Modulino::A );
use strict;
unless(caller) {
no strict 'refs';
# "override" Modulino::A::buy with Modulino::B::buy...
*{ "Modulino::A::buy" } = \&buy;
# re-use Modulino::A::run...
__PACKAGE__->run(@ARGV);
}
sub perform_modulino_specific_stuff {
my $class = shift;
print "[special stuff for Modulino::Bs]\n";
}
sub buy { print "[alternative way to buy ", $_[0], "]\n" }
#######
####
# Demonstrate use of Modulino::A's exported functions...
$ perl -MModulinoA=buy -le 'buy("camels and onions")'
#######