my string = "foo_a_foo_b_foo_c_foo_d_foo_e_foo_f_foo"
my $pattern = "foo"
my $better = "bar"
my $n = 1;
$string =~ s/^(($pattern.*){$n})$pattern/$1$better/;
####
"foo_a_foo_b_foo_c_foo_d_foo_e_foo_f_bar"
####
"foo_a_bar_b_foo_c_foo_d_foo_e_foo_f_foo"