use CGI qw(:all delete_all escapeHTML); my $redirect_page = "display_page.cgi"; if (my $session = param('session')) { # returning to pick up session # # ...(2) redirect # my $data = $cache->get($session); if ( $data->[0] ){ # # ...(2a) flag set # } else{ # .... } elsif ( (my $slp = param('sleep')) eq 'sleep') { # ....(1) first invocation $cache->set($session, [0, ""]); # no data yet if (my $pid = fork) { # parent does # # ....(1a) fork: parent # print redirect(self_url()); } elsif (defined $pid) { # child does # # ....(1b) fork: child # $cache->set($session, [1, $buf]); exit 0; } else { # .... } } else { # display form # .... } # ....