for my $i ( 1 .. $n ) { $results[ $i ] = $db->getLocalData() * $lwp->getRemoteData(); } #### for my $i (1 .. $n) { $results[ $i ] = somefunc1($i) + somefunc2($i); } { my $data = 0; sub somefunc1 { my $i = shift; $i += $data++; sleep(1); $i; } sub somefunc2 { my $i = shift; sleep(1); $i *= $data++; $i; } } #### parallel { clean_up_tmp_dir(); serial { $data = read_value_from_db(); $data += read_value_from_lwp(); }; serial { my $other_stuff = fib(3) * fib(8); do_something($other_stuff); } };