The main problem is that it doesn't deal with overlapping regexes very well, (i.e. your regex matches parts of your replacement string).
Suppose you have the string:
"The wodchuck at the zo stod on the stoop";
You realize that it will only make sense after replacing the first three 'o's with 'oo's
my $str = "The wodchuck at the zo stod on the stoop";
$str =~ s/o/oo/i for 1..3;
print "$str\n";
Oops, that yields:
The woooodchuck at the zo stod on the stoop
The other solutions would have produced:
The woodchuck at the zoo stood on the stoop
-Blake