my $count = 0; my $text = 'aeuaeueauaeuau'; my $search = 'a'; my $replace = 'XX'; while ($text =~ m{\Q$search}g) { substr($text, pos($text)-length($search), length($search), $replace); last if ++$count >= 3; } print "$text\n";