Two rather different approaches spring to mind:
in reply to executing external program question
Alternative (a) is a lot easier to implement provided that you can run the 1hr+ job before the rest of the code. Data::Dumper or Storable 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 IPC::Open2 module for this alternative.
- Save the output from the long-running job to a temporary file, and read from that when you need the results
- Launch the long-running job as a sub-process of your Perl program, and use one of the many IPC (inter-process-communication) methods