Hashing es el proceso de convertir una clave dada en otro valor. Se utiliza una función hash para generar el nuevo valor (llamado hash) de acuerdo con un algoritmo matemático.
Un hash de Perl se define mediante pares clave-valor. Perl almacena elementos de un hash de una manera tan óptima que puede buscar sus valores en función de las claves muy rápidamente. Al igual que una variable escalar o de array, una variable hash tiene su propio prefijo. Una variable hash debe comenzar con un signo de porcentaje (%) . Una clave hash debe ser única. Si intenta agregar un nuevo par clave-valor con la clave que ya existe, se sobrescribirá el valor de la clave existente.
Ejemplo:
#!/usr/bin/perl # defines a hash named subjects # the first scalar inside the # brackets are hashes and the # second one beside them are values my %subjects = qw(Physics Laws Chemistry Exceptions Mathematics Formulas Programming Fun); # getting the value of Programming print($subjects{'Programming'});
Fun
Para hacer que el código sea más elegante y fácil de leer, Perl proporciona el operador =>. Ayuda a diferenciar entre claves y valores. Las claves siempre apuntan a sus valores correspondientes con el operador =>. Sin embargo, aquí Perl requiere que las claves de un hash sean strings, mientras tanto, los valores pueden ser escalares. Si utiliza valores que no son strings como claves, puede obtener un resultado inesperado. El hash $subjects se puede reescribir usando el operador => de la siguiente manera:
#!/usr/bin/perl # declaring hash using the => operator my %subjects = ( Physics => 'Laws', Chemistry => 'Exceptions', Mathematics => 'Formulas', Programming => 'Fun' ); # getting the value of Mathematics print($subjects{'Mathematics'});
Formulas
Número impar de elementos en la asignación hash
Cuando el número de elementos en la asignación de hash es impar, Perl nos da una advertencia ya que advierte que el número de elementos que se asignan al hash no se puede dividir por 2. Que el número de elementos es impar.
Dado que esto es solo una advertencia (y solo se muestra si ‘usar advertencias’ está en vigor), el script continuará con la tarea. Los elementos impares (“Física”, “Química”, “Matemáticas” y “Programación”) se convertirán en claves y los elementos pares (“Leyes”, “Excepciones” y “Fórmulas”) se convertirán en valores. Como el número de elementos es impar, la última tecla (“Programación”) no tendrá pareja.
#!/usr/bin/perl use warnings; use strict; # declaring hash with odd number # of assignments my %subjects = qw( Physics Laws Chemistry Exceptions Mathematics Formulas Programming ); print "Physics = $subjects{'Physics'}\n"; print "Chemistry = $subjects{'Chemistry'}\n"; print "Mathematics = $subjects{'Mathematics'}\n"; print "Programming = $subjects{'Programming'}\n";
Producción
Physics = Laws Chemistry = Exceptions Mathematics = Formulas Programming = Odd number of elements in hash assignment at line 7. Use of uninitialized value $subjects{"Programming"} in print at line 12.
Adición, Eliminación y Modificación de elementos de un Hash
Agregar nuevos elementos al Hash y modificarlos son muy similares entre sí. El nombre del hash va seguido de la clave entre llaves y se le asigna un valor. Podemos usar la función de eliminar para eliminar un hash. El siguiente código de ejemplo muestra cómo asignar/modificar y eliminar elementos de un hash:
#!/usr/bin/perl # declaring a hash my %subjects = ( Physics => 'Laws', Chemistry => 'Exceptions', Mathematics => 'Formulas', Programming => 'Fun' ); # extracting keys of hash in an array @keys = keys %subjects; # determining size of keys-array i.e. # number of elements in hash $size = @keys; print "Hash size is $size\n"; # adding an element to the hash; $subjects{'Biology'} = 'Boring'; # determining size of hash after # adding an element @keys = keys %subjects; $size = @keys; print "Hash size is $size\n"; # removing an element from hash delete $subjects{'Chemistry'}; # determining size of hash after # removing an element @keys = keys %subjects; $size = @keys; print "Hash size is $size\n"; # modifying an element of hash $subjects{'Mathematics'} = 'Intriguing'; # looping over the hash for(keys %subjects){ print("$_ is $subjects{$_}\n"); }
Hash size is 4 Hash size is 5 Hash size is 4 Mathematics is Intriguing Physics is Laws Programming is Fun Biology is Boring
Publicación traducida automáticamente
Artículo escrito por equbalzeeshan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA