If the versioning is very important to you down to the includes, may I suggest using
to bundle all of your code and requires together to have a bundled version locked application. for each build of your app par it give it a unique version number and then promote to released after all qa has been done. this gives you a very good reliable snapshot of all of the required dependancies so you know that the app (when distributed or released) will run in a known state. You may also use the same kit to bundle your app into a executable so that you do not need to track the version of perl that is used to run it.