Your SlideShare is downloading. ×
Perl5 hashes
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Perl5 hashes

320

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
320
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
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
  • Transcript

    • 1. Programación en perl hashes
    • 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. ¿Qué es un hash?
    • 4. ¿Qué es un hash?Supongamos que queremos almacenar la siguiente informaciónde un coche: marca, modelo, numero de puertas y potencia.
    • 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. ¿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. ¿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. ¿Qué es un hash?Accediendo al elemento de un hash: $coche{‘marca’} = ‘ford’
    • 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. ¿Qué es un hash?
    • 11. ¿Qué es un hash?La clave puede ser una expresión perl:
    • 12. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’;
    • 13. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave };
    • 14. ¿Qué es un hash?La clave puede ser una expresión perl: $coche{$variable}=‘ford’; $coche{ &obtenerClave }; $coche{ $clave+‘_key’};
    • 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. ¿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. ¿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. ¿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. 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. Hash en contexto de lista Un hash en contexto de lista es una lista de parejas clave valor1. @coche = %coche
    • 21. Hash en contexto de lista ¿Qué hace la siguiente línea de código?1.%coche_invertido = reverse %coche
    • 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. Funcioneskeys Devuelve una lista con las claves de un hashvalues Devuelve una lista con los valores de un hash
    • 24. EjercicioEscribir una función en perl (printHash) quemuestre por pantalla un hash con el siguienteformato:clave1 => valor1clave2 => valor2clave3 => valor3
    • 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. Funciones eachwhile ( ($key, $value) = each %hash ) { print "$key => $valuen";}
    • 27. Funciones exists Devuelve verdadero si la clave existe y falso en caso contrarioif (exists $coche{"marca"}) { print "Marca: $coche{‘marca’}n";}
    • 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. El hash %ENVAlmacena las variables de entorno.Escribir un script en perl que lo muestre porpantalla.

    ×