Alternative (a) is a lot easier to implement provided that you can run the 1hr+ job before the rest of the code.
are two useful modules if you want a "perlish" format to the results data. Alternative (b) may allow you to interact with the long-running job, but it is non-trivial to avoid all of the potential pit-falls of concurrent programming. You may want to investigate the
module for this alternative.