Jue Nov 17, 2005 9:14 am
|
 |
Richo
Perlero Nuevo

|
Registrado: 30 Ago 2005
Mensajes: 8
|
|
| Crear random alfanúmerico |
|
|
| 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 |
|
|
|

Jue Nov 17, 2005 10:28 am
|
 |
explorer39
Perlero Frecuente

|
Registrado: 23 Ago 2005
Mensajes: 126
Ubicación: Valladolid, España
|
|
|
|
|
| Código: |
| 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: |
| perl -e ' @c = ( 'A' .. 'Z', 0 .. 9 ); foreach ( 1 .. 12 ) { print $c[ rand(@c) ] } print "\n" ' |
|
|

Powered by phpBB © 2001, 2005 phpBB Group
|