in reply to use: distinguishing compile-time vs run-time dependencies

That sounds like dependency injection (part of the larger system of inversion of control). I hadn't thought of a formal specification for such things, but that's an interesting concept.

See perhaps Bread::Board for practical uses.

A injection framework might even export a constant of the appropriate name (LWP::UserAgent) such that the IoC registry could get the appropriate class object. Interesting.