in reply to Is this safe to export and import functions this way?

Thanks for posting this!

One thing that might be a surprising side-effect of your approach is, that it will re-export all functions in the module, even if they were imported themselves already:

package My::Package; use List::Util 'max'; use Exporter qw(import); @EXPORT_OK = (keys %My::Package::);

... will also happily export the max subroutine.