sub routine { my $module = shift; my $routine = shift; my @params = @_; eval qq{ use "Foo::Bar::$module"; }; no strict 'refs'; return &{"Foo::Bar::$module::$routine"}(@params); } #### sub routine { my $module = shift; my $routine = shift; my @params = @_; require autouse; autouse->import( "Foo::Bar::$module", "Foo::Bar::$module::$routine" ); no strict 'refs'; return &{"Foo::Bar::$module::$routine"}(@params); }