Lib::Daemon::daemonize(); print "Starting Daemon.... \n\n"; my @thr = (); while(1){ main(); sleep(60); } sub threadMain{ print "Child Thread $_[0] \n"; print "********************************************************************************\n"; parseMain($_[0],$_[1]); return 1; } sub main{ my @instData = Lib::PLSInstance::getInstances(); for(my $i = 0; $i < @instData; $i++){ $thr[$i] = threads->new(\&threadMain, $instData[$i][2],$instData[$i][1] ) or die "Thread Died: $!"; } # start rejoining the threads for (my $i = 0; $i < @instData; $i++) { print "Joining thread $i\n"; $thr[$i]->join() or die "Thread die on join: $!"; print "\tThread $i joined back with the parent\n"; } }