I suggest that you need to be explicit about it ... if a job needs to be restarted or repeated, it needs to be able to run the same thing. One simple way to do it would be to write a stub script that searches for the latest (e.g. last filename, where the filenames are soandso.##.pm), then requires that file and invokes its main method.
This allows you to explicitly keep every successive version of the software until you choose to discard or to archive it. The stub-script should also be written so that you can specify the module-name to be loaded, on the command line, if you need to explicitly specify which one to run. And I would never re-use a filename.