##
$_ = 'foo babab bar';
$find = 'bab';
$replace = 'xxx';
####
sub replace {
die "Some helpful messsage" unless 3 == grep defined $_, @_[0..2];
my ($str,$find,$rep) = @_;
my $i = 0;
my $l = length($find);
my @pos;
while ($i < length($str)) {
$i = index($str,$find,$i);
last if $i < 0;
push @pos, $i;
$i += $l;
}
substr($str,$_,$l,$rep) for reverse @pos;
return $str;
}