#!/usr/bin/perl -w use feature 'say'; use IO::Handle; my $total=0.0; @waitlist = qw(0 200 400 800 1000); foreach $item (@waitlist) { pipe(*{$item},RETHAND); *{$item}->autoflush(1); RETHAND->autoflush(1); unless (my $pid = fork()) { my $h = 1.0 /1200.0; my $sum = 0.0; for (my $i = $item; $i < ($item+200); $i++){ my $x = $h * ($i - 0.5); $sum += 4.0 / (1.0 + $x*$x); } my $ret=$sum*$h; print RETHAND "$ret"; exit; }else{ close RETHAND } } foreach $item (@waitlist) { $response = <$item>; $total+= ($response+0.0); print "$total\n"; } 1 while (wait() != -1); print " $total\n"; print "All done!\n";