in reply to simple one
You've already got the problem: tail takes the _end_ of a stream and that can only be determined when the stream ends. So tail will start its output to ./program.pl when the other programs have done their job.