for $i (0..$number) { $thr_{$i} = new Thread \&sub_routine, arg1, @array_of args; } sub sub_routine { do something; return "Thread completed successfully"; } #### my @threads_return_data for $i (0 .. $number) { push @threads_return_data, $thr_{$i}->join; } post_processing_subroutine();