$ cat > Communicate.pm
package Communicate;
use 5.010_000;
use strict;
use warnings;
sub build_greeter {
my ( $class, $name, $arg ) = @_;
return sub {
my $person = shift // 'World';
my $comment = $arg->{greeting} // 'Hello';
say sprintf '%s, %s!', $comment, $person;
}
}
use Sub::Exporter -setup => {
exports => [ greet => \'build_greeter' ],
};
1;
$ cat > communicate.pl
#! perl
use 5.010_000;
use strict;
use warnings;
use lib '.';
use Communicate greet => {
greeting => 'Well-done',
-as => 'say_to',
};
say_to('Nelo');
exit 0;
####
$ perl communicate.pl
Well-done, Nelo!
####
$ perl -I. -e 'use Communicate greet => { greeting => q{Good job}, -as => q{say_to} }; say_to(q{Nelo})'
Good job, Nelo!