http://www.perlmonks.org?node_id=475060


in reply to Replacing a specfied instance of a pattern in a string

One way:
my $foo = 'Fsih my test variable is fsihd or is it gfsih or gfsihd fsi +h'; # Replace the 3rd $foo =~ s/((?:fsih.*?){2})fsih/$1fish/i or warn "Not found"; print "Foo = $foo\n";

Caution: Contents may have been coded under pressure.