in reply to strange behaviour when forking lots of times

Caution when experimenting with this. It's a very effective fork bomb for slightly larger values of 10.

Perl fork behaves exactly like unistd.h fork(), except that the return value differs on failure. When fork fails, it returns undef instead of -1, as C fork() does.

Here's my forking idiom:

my %kid; { defined(my $cpid = fork) or warn $! and last; $cpid and $kid{$cpid} = undef, last; undef %kid; # in child now # do childish things exit 0; } # . . . delete $kid{wait()} while %kid;
There are other ways to avoid zombie kids. Which you choose depends on how your program flow is intended to go.

After Compline,
Zaxo