while ($string =~ /abc/ig) { my $ins = sprintf(" def(%s)", $x++); my $pos = $+[0]; $string =~ s/\G/$ins/; pos($string) = $pos + length($ins); } #### while ($string =~ /abc/ig) { my $ins = sprintf(" def(%s)", $x++); my $pos = $+[0]; substr($string, $pos, 0, $ins); pos($string) = $pos + length($ins); } #### $string =~ s/(abc)/ sprintf("%s def(%s)", $1, $x++) /eig;