sub routine { my $module = shift; my $routine = shift; my @params = @_; BEGIN { use "Foo::Bar::$module"; } #do something with $@ my $return = &{Foo::Bar::$module::$routine}(@params); return $return; }