my $var = do { my $temp1 = func1($a); my $temp2 = func2(++$a); $temp1 + $temp2; }; #### my $var = func1($a) + func2($a + 1); #### my $var = do { my ($temp1, $temp2); my $thr1 = threads->new(sub { $temp1 = func1($a) })->start; my $thr2 = threads->new(sub { $temp2 = func2($a+1) })->start; $thr1->join; $thr2->join; $temp1 + $temp2 }; #### AUTOTHREADSUBEXPRS { $var = func1($a) + func2($a+1); } #### use threadedsubexprs; my $var = func1($a) + func2($a+1);