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;