It's not entirely clear what you want - for example, does job 1a only depend on job 1, or must job 2 also finish before 1a starts? and does job 3 only depend on job 2a, or must 1a also finish before job 3 starts?
But that's a minor matter. My weapon of choice for this would be your shell's job control system. It's really good at that sort of thing and you'll have to write less code than you would if you were to do something perlish.
update: ignore me, I didn't read the bit about wanting reports etc