sub kill_child { print "Please wait, stopping child processes\n"; kill USR1 => keys(%child_pids); sleep while (%child_pids); } sub reap_child { while ( (my $child = waitpid(-1,&WNOHANG)) > 0 ) { delete $child_pids{$child}; } }