my $up = "UPDATE Prior_to_CI_calc_A_$region SET SUM_wi = $SUM_Weight_wi, Sum_wixi_x_1000 = $SUM_wixi_x_1000_fill, Sum_wi2xi_x_1000 = $SUM_wi2xi_x_1000_fill FROM Prior_to_CI_calc_A_$region A WHERE A.Aggregated_area LIKE '$Aggregated_area_fill' AND A.Cause LIKE '$Cause_fill' "; #### sub update_region { my ($region) = @_; my $table = "Prior_to_CI_calc_A_$region"; sprintf "UPDATE %s SET SUM_wi = ? , Sum_wixi_x_1000 = ? , Sum_wi2xi_x_1000 = ? FROM %s A WHERE A.Aggregated_area LIKE ? AND A.Cause LIKE ? ", $table, $table; }; my $region = "foo"; my $query = $dbh->prepare(update_region($region)); $query->execute(1,2,3,'US','unknown');