use strict; use warnings; use autodie; use POSIX ':sys_wait_h'; my @sites = qw( www.perlmonks.org www.stackoverflow.com www.whitehouse.gov ); open my $stdout, '>&', \*STDOUT; # dup STDOUT open STDOUT, '>', '/dev/null'; # to make ping shut up my %kids; for my $site (@sites) { my $pid = fork; $pid == 0 and exec 'ping', '-c', '3', $site; $kids{$pid} = $site; } while ( ( my $kid = wait ) != -1 ) { print $stdout "$kids{$kid} returned $?\n"; }