#!/opt/perl/bin/perl -w use strict; my %kids; foreach my $letter ('x' .. 'z') { print localtime () . ": Forking kids for $letter\n"; foreach my $number (1 .. 5) { my $code = "$letter$number"; my $pid = fork; die "Failed to fork $code" unless defined $pid; $kids {$pid} = [$code, time] if $pid; unless ($pid) { # In child. my $sleep = 2 + int rand 18; print localtime () . ": Kid $code sleeping for $sleep seconds.\n"; sleep $sleep; exit; } } while ((my $kid = wait) != -1) { print localtime () . ": Reaped kid $kids{$kid}->[0] after ", time () - $kids {$kid} -> [1], " seconds.\n"; } print localtime () . ": Done reaping kids for $letter\n"; sleep 1; } __END__