Sounds like what you really want is forking which has already been mentioned above. TIMTOWDI - Another option would be to spawn external ping processes (IPC with Open) and then poll for returned results. This is only really usefull if you have to use an external program to ping with. It would save you the cost of one proccess for every external ping process. Take a look at IO::Select