package Foo; use strict; use warnings; sub import { # print "Foo::import(): @_\n"; # debug shift @_; # first arg not needed here my $dest = caller; for my $what (@_) { if ($what eq ':transforms') { no strict 'refs'; for (qw(transform_one transform_two)) { *{"${dest}::$_"} = *{"Foo::Transforms::$_"}; } } # elsif ... } } package Foo::Transforms; sub transform_one{ return "transform_one(): @_" } sub transform_two{ return "transform_two(): @_" } # ... 1; #### #!/usr/local/bin/perl -l use Foo qw(:transforms); print transform_one("xyzabc"); __END__ $ ./831686.pl transform_one(): xyzabc