I think that the
only module is developed exactly to cover the module versioning.
Quotation from its pod:
The only.pm facility allows you to load a MODULE only if it satisfies a given CONDITION. Normally that condition is a version. If you just specify a single version, 'only' will only load the module matching that version. If you specify multiple versions, the module can be any of those versions. ...
only.pm will also allow you to load a particular version of a module, when many versions of the same module are installed. ...