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');