in reply to Restarting a daemon

By doing a system(), you say "start this process, wait till it finishes". What you want is an exec of yourself. Something like:
exec $0 => @ARGV; die "exec failed: $!";

Abigail