use strict; use Time::HiRes qw ( sleep ); my $no_rec = $ARGV[0]; #print "--- $no_rec ---\n"; my $to = int rand(5)+2; print "to: $to (PID: $$)\n"; foreach (1..$to) { print "$_ "; print "pid: $$ " unless $no_rec; print ( "." x 70 ); print "\n"; sleep( int(rand(100)+100)/1000 ); unless ( $no_rec ) { my $finite = int( (rand 1) + 0.8 ); print "creating new child, finite=$finite\n\n"; system( "perl \"$0\" $finite" ); print "returned to PID: $$\n"; } } if ( $no_rec ) { print "PID: $$ finished\n\n"; exit 0; } print "PID: $$ infinite loop has started\n"; for (1..100) { print ( "infinite loop " x 10 ); print "\n"; } print "\n"; while (1) { sleep 60; };