You need to show more code. Threads won't destroy themselves automagically, they either need to be joined or detached, and they must finish ( or return ) from their code block for them to end.
Right - showing more code would be rather pointless. You can literally take the code from the Net::Daemon perldoc (as I mentioned in the previous link) for the Calculator server and run that.
The fault is within Net::Daemon - and if you replace the lines I mentioned previously in the Net/Daemon.pm module file then you'll see what I mean.