Suponiendo que el identificador debe comenzar con un carácter alfabético, y luego puede contener cualquier número de alfa o numérico, Me gustaría hacer esto:
my $string = 'roger54a';
print "Match\n" if $string =~ m/\A\p{alpha}[\p{alpha}\p{Number}]*\z/;
que ancla al principio y al final de la cadena, lo que impide cualquier caracteres que no coinciden con el conjunto específico de un solo alfa seguido de cualquier cantidad de alfa y numérico.
Actualización: Veo que tchrist acaba de dar una gran explicación de las propiedades Unicode. Esta respuesta proporciona el contexto de una expresión regular completa.
Si quería el 'alfa' que lleva a ser dos o tres dígitos seguidos de alfa-numérico, basta con añadir el cuantificador apropiado:
$string =~ m/\A\p{alpha}{2,3}[\p{alpha}\p{Number}]*\z/
Update2: Veo una definición más fuerte de lo que' Estoy buscando en un comentario a una de las respuestas aquí.Aquí está mi opinión sobre ella después de ver su aclaración:
m/\Aroger[\p{alpha}\p{Number}]{2,3}\z/
Cómo doesn ¿Funciona? Por favor, da más detalles. – Bojangles
Probablemente deberías agregar entrada y salida esperada ... – Stefan