Perl: creación de un hash a partir de una array

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'});
Producción:

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'});
Producción:

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");
}
Producció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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *