Perl5 hashes

478 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
478
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • ver ejemplo hashes1.pl\n\nIndicar que el orden del array es el que más le convenga a perl internamente para almacenar el hash (y además lo hace de forma que no se pueda predecir para evitar posibles ataques)\n
  • ejecutar: hashes2.pl\n
  • Se pueden omitir las comillas de las claves siempre que estas consistan en letras, numeros y guiones bajos.\n
  • \n
  • ver printhash.pl\n
  • \n
  • EJERCICIO: repetir el ejercicio anterior pero con la función each. ver script printhash_each.pl\n\niteración 1: se asigna la primera pareja clave-valor a las variables $ke y $value.\nEl resultado de una asignación en ámbito escalar es el número de elementos que se asignan, en este caso 2. como dos es verdaderos (!=0) se ejecuta el cuerpo del bucle\niteraciones siguientes: se van asignando de esta forma hasta que se termina\ncuando no quedan más elementos para asignar, la asignación de lista en entorno escalar devuelve cero y se sale del buble. Las variables $key y $value valen undef. \n
  • \n
  • No es lo mismo borrar una clave que asignarle un valor undef. Ver script hashes3.pl\n
  • ver env.pl\n
  • Perl5 hashes

    1. 1. Programación en perl hashes
    2. 2. ¿Qué es un hash?Estructura de datos que permite almacenarun número indeterminado de datos indexadospor nombre.Es como un array en el que sustituimos elíndice numérico por una cadena.
    3. 3. ¿Qué es un hash?
    4. 4. ¿Qué es un hash?Supongamos que queremos almacenar la siguiente informaciónde un coche: marca, modelo, numero de puertas y potencia.
    5. 5. ¿Qué es un hash?Supongamos que queremos almacenar la siguiente informaciónde un coche: marca, modelo, numero de puertas y potencia.$coche[0]=‘ford’$coche[1]=‘scort’$coche[2]=5$coche[3]=‘150cv’
    6. 6. ¿Qué es un hash?Supongamos que queremos almacenar la siguiente informaciónde un coche: marca, modelo, numero de puertas y potencia.$coche[0]=‘ford’$coche[1]=‘scort’$coche[2]=5$coche[3]=‘150cv’Problema: nos tenemos que acordar de qué significa cadaíndice.
    7. 7. ¿Qué es un hash?Supongamos que queremos almacenar la siguiente informaciónde un coche: marca, modelo, numero de puertas y potencia.$coche[0]=‘ford’$coche[1]=‘scort’$coche[2]=5$coche[3]=‘150cv’Problema: nos tenemos que acordar de qué significa cadaíndice.Problema aún peor: si no lo documentamos, el programadorque tenga que revisar vuestro código dos años después nocreo que os tenga en muy buena estima.
    8. 8. ¿Qué es un hash?Accediendo al elemento de un hash: $coche{‘marca’} = ‘ford’
    9. 9. ¿Qué es un hash? $ porque en un elemento de un hashalmacenamos un escalar clave valor Accediendo al elemento de un hash: $coche{‘marca’} = ‘ford’ identificador (nombre del hash)
    10. 10. ¿Qué es un hash?
    11. 11. ¿Qué es un hash?La clave puede ser una expresión perl:
    12. 12. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’;
    13. 13. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave };
    14. 14. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave }; $coche{ $clave+‘_key’};
    15. 15. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave }; $coche{ $clave+‘_key’};Al hacer $coch{‘marca’} = ‘ford’
    16. 16. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave }; $coche{ $clave+‘_key’};Al hacer $coch{‘marca’} = ‘ford’ Si la clave no existe, se crea y se le asigna el valor ‘ford’
    17. 17. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave }; $coche{ $clave+‘_key’};Al hacer $coch{‘marca’} = ‘ford’ Si la clave no existe, se crea y se le asigna el valor ‘ford’ Si la clave ya existe, se sobreescribe el valor.
    18. 18. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave }; $coche{ $clave+‘_key’};Al hacer $coch{‘marca’} = ‘ford’ Si la clave no existe, se crea y se le asigna el valor ‘ford’ Si la clave ya existe, se sobreescribe el valor.Si se recupera una clave que no existe, se obtiene undef.
    19. 19. Definiendo un hash Para referirnos al hash completo utilizamos el símbolo %, igual que para referirnos a un array utilizábamos @ %choche Podemos convertir un hash en una lista y una lista en un hash:1.%some_hash = (foo, 35, bar, 12.4, 2.5, hola, wilma, 1.72e30, pedro, "adiosn");
    20. 20. Hash en contexto de lista Un hash en contexto de lista es una lista de parejas clave valor1. @coche = %coche
    21. 21. Hash en contexto de lista ¿Qué hace la siguiente línea de código?1.%coche_invertido = reverse %coche
    22. 22. “The Big Arrow” Otra forma de inicializar los hashes en perl1.my %coche = (2. marca => ford,3. modelo => ‘scort’,4. puertas => 5,5. potencia => 140cv,6.);
    23. 23. Funcioneskeys Devuelve una lista con las claves de un hashvalues Devuelve una lista con los valores de un hash
    24. 24. EjercicioEscribir una función en perl (printHash) quemuestre por pantalla un hash con el siguienteformato:clave1 => valor1clave2 => valor2clave3 => valor3
    25. 25. Funcioneseach Esta función devuelve en cada llamada una pareja clave/valor como una lista de dos elementos Con cada llamada, la función devuelve una nueva pareja clave valor Cuando termina (no quedan más elementos) se devuelve una lista vacía
    26. 26. Funciones eachwhile ( ($key, $value) = each %hash ) { print "$key => $valuen";}
    27. 27. Funciones exists Devuelve verdadero si la clave existe y falso en caso contrarioif (exists $coche{"marca"}) { print "Marca: $coche{‘marca’}n";}
    28. 28. Funciones delete Elimina una clave del hash (y su correspondiente valor) Si la clave no existe, no da ni error ni warning.my $clave = "modelo";delete $coche{$modelo};
    29. 29. El hash %ENVAlmacena las variables de entorno.Escribir un script en perl que lo muestre porpantalla.

    ×