use Unicode::Normalize qw(NFD); sub is_greek_vocalic($) { use charnames "greek"; die "wrong args" unless @_ == 1; local $_ = NFD(lc(shift())); s/\pM+//g; # combining marks from NFD form s/\p{Diacritic}+//g; # eg, GREEK DASIA, which is \p{Sk} return scalar m{ ^ [\N{alpha}\N{epsilon}\N{eta}\N{iota}\N{omicron}\N{upsilon}\N{omega}]+ \z }x; }