in reply to run-time module usage

Your guess is exactly right: namely, it really is a canonical way to solve your mentioned problem. You could add some error-checking using
eval { # your mentioned "require" and "import" statements go here } if ($@) { # something smells fishy here, or my name is Stinky Lulu }
which is a special case of try-block.

Courage, the Cowardly Dog.