my @strings = qw( aaaaa eeeee iiiii abcde aeiou bdfhj ); my %regexes = ( alternation => qr/a|A|e|E|i|I|o|O|u|U/, class => qr/[AaEeIiOoUu]/ ); foreach my $string (@strings) { print "$string:\n"; while (my ($k, $r) = each %regexes) { print "\t$k - " . ($string =~ /$r/ ? 'YES' : 'NO') . $/; } } --------------- aaaaa: alternation - YES class - YES eeeee: alternation - YES class - YES iiiii: alternation - YES class - YES abcde: alternation - YES class - YES aeiou: alternation - YES class - YES bdfhj: alternation - NO class - NO