I wonder how this would benchmark since it doesn't rescan any part of the string:
use strict;
my $vowels="aeiou";
for my $str (qw(abcdefghijklmnopqrstuvwxyz missing_vowels)) {
my $tmp_v = $vowels;
LOOP: {
if ($str =~ /\G[^$tmp_v]*([$tmp_v])/i) {
$tmp_v =~ s/$1//i;
print "Succeeded: $str\n" and last LOOP unless $tmp_v;
redo LOOP;
}
print "Failed: $str\n" and last LOOP;
}
}
Update:Well, its dog slow. If there's a ton of consonants at the beginning of the string, it might be worthwhile, but otherwise, forget it. Oh well, it was worth a try :)