Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Crear random alfanúmerico

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Jue Nov 17, 2005 9:14 am
Richo
Perlero Nuevo
Perlero Nuevo
Registrado: 30 Ago 2005
Mensajes: 8
Crear random alfanúmerico Responder citando

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
Mensaje Jue Nov 17, 2005 10:28 am
explorer39
Perlero Frecuente
Perlero Frecuente
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
Responder citando

Código:
perl -le ' @c = ( 'A' .. 'Z', 0 .. 9 ); print map { $c[ rand @c ] } 1..12 '

Formas hay muchas... Smile
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:
perl -e ' @c = ( 'A' .. 'Z', 0 .. 9 ); foreach ( 1 .. 12 ) { print $c[ rand(@c) ] } print "\n" '
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group