use strict; use warnings; use 5.010; my $string = 'foobar'; while ($string =~ s/\G.*?\K[aeiou]/\U$&/si) { say $&; } continue { pos($string) = $+[-1]; } say $string;