use threads; my @data; if ($UseDataOne eq 1){ push @data, async { [ GetDataOne(@TableParameters) ] }; } if ($UseDatatwo eq 1){ push @data, async { [ GetDatatwo(@TableParameters) ] }; } if ($UseDataThree eq 1){ push @data, async { [ GetDataThree(@TableParameters) ] }; } if ($UseDataFour eq 1){ push @data, async { [ GetDataFour(@TableParameters) ] }; } @data = map { $_->join } @data;