c:\@Work\Perl\monks>perl -wMstrict -le "my $vowel = qr{ [AEIOUaeiou] }xms; ;; my $s = 'aePDQioVWXua'; ;; print 'offset of first non-vowel: ', $s =~ m{ (?! $vowel) }xmsg ? pos($s) : 'none'; print 'offset of last non-vowel: ', $s =~ m{ .* (?! $vowel) }xmsg ? pos($s) : 'none'; ;; $s = 'aei'; print 'offset of first non-vowel: ', $s =~ m{ (?! $vowel) }xmsg ? pos($s) : 'none'; " offset of first non-vowel: 2 offset of last non-vowel: 12 offset of first non-vowel: 3