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.

Replies are listed 'Best First'.
Re^2: Replacing a specfied instance of a pattern in a string
by GrandFather (Saint) on Jul 15, 2005 at 01:08 UTC

    or to pass the index in use:

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

    Perl is Huffman encoded by design.