Página 1 de 1

Crear random alfanúmerico

NotaPublicado: 2005-11-17 10:14 @468
por Richo
HOLA A TODOS, NECESITO SABER SI HAY ALGUNA MANERA DE GENERAR 12 CARACTERES ALFANUMERICOS EN PERL, YA QUE LA FUNCION SRAND SOLO DEVUELVE NUMEROS, MUCHAS GRACIAS POR LA AYUDA

NotaPublicado: 2005-11-17 11:28 @519
por explorer39
Código: Seleccionar todo
perl -le ' @c = ( 'A' .. 'Z', 0 .. 9 ); print map { $c[ rand @c ] } 1..12 '

Formas hay muchas... :-)
Esta es una de ellas:
Creamos el vector @c que contenga las letras que formarán nuestro código. Puede ser cualquier combinación de letras, números, etc., pero lo más rápido es decirle que nos cree un vector con tantos elementos existan desde la 'A' hasta (..) la 'Z' y desde el '0' hasta el '9'.
Luego hacemos un bucle del 1 al 12 y por cada uno de ellos hacemos un map, que lo que hace es ejecutar su contenido, que es sacar la letra del vector @c ($c[]) correspondiente a la posición calculada de sacar un valor aleatorio (rand) entre 0 (incluído) y el número de valores que contenga el vector @c (excluído) (@c está ahí en modo escalar y nos devuelve ese número).
Como las posiciones del vector cuentan también desde 0, pues el resultado será una de las letras del vector, desde la primera a la última.
Al final, map devuelve, como vector, las 12 letras a print, que a su vez lo sacará por pantalla todas juntas (por defecto de cómo se pinta un vector en pantalla) y al final, un retorno de carro (-l).
Esta es otra forma de verlo:
Código: Seleccionar todo
perl -e ' @c = ( 'A' .. 'Z', 0 .. 9 ); foreach ( 1 .. 12 ) { print $c[ rand(@c) ] } print "\n" '