Hachís Perl

Un hash es un conjunto de pares clave-valor. Perl almacena elementos de un hash de modo que busca los valores en función de sus claves. Las variables hash comienzan con un signo ‘%’. 

Perl requiere que las claves de un hash sean strings, mientras que los valores pueden ser escalares . Estos valores pueden ser un número, una string o una referencia. Si se utilizan valores que no son strings como claves, se obtiene un resultado inesperado. 

Una clave hash debe ser única. Si se agrega un nuevo par clave-valor a un hash y esa clave existe, se sobrescribe su valor correspondiente. 

Creación de hashes

Hay muchas formas de inicializar una variable hash que se muestran a continuación:

  • El valor se asigna directamente como se muestra a continuación y los datos se agregan a un hash existente.
$stud{'Comp'} = 45;
$stud{'Inft'} = 42;
$stud{'Extc'} = 35;
  • Otra forma es usar una lista que se convierte en hash tomando pares individuales. El primer elemento del par se utiliza como clave y el segundo se toma como valor.
%stud = ('Comp', 45, 'Inft', 42, 'Extc', 35);
  • Una forma es usar => para indicar los pares clave/valor como se muestra a continuación:
%stud = ('Comp' => 45, 'Inft' => 42, 'Extc' => 35);
  • Otra forma de hacer lo mismo es como se muestra a continuación. Aquí todas las claves están precedidas por un guión (-) y, por lo tanto, no se requieren comillas alrededor de ellas. El hash se puede compilar con este método solo si no hay espacios en la palabra.
%stud = (-Comp => 45, -Inft => 42, -Extc => 35);
Acceso a elementos hash

Para acceder al elemento individual desde el hash, la variable tiene como prefijo un signo de dólar ($) y luego agrega la clave del elemento entre llaves después del nombre de la variable. 

El siguiente ejemplo ilustra todos los métodos de creación de hash como se explicó anteriormente: 

Ejemplo :  

Perl

#!/usr/bin/perl
 
# Initializing Hash1 by
# directly assigning values
$stud1{'Comp'} = 10;
$stud1{'Inft'} = 20;
$stud1{'Extc'} = 30;
 
# printing elements of stud
print "Printing values of Hash1\n";
print "$stud1{'Comp'}\n";
print "$stud1{'Inft'}\n";
print "$stud1{'Extc'}\n";
 
# Initializing Hash2 by taking
# individual pairs
%stud2 = ('Comp', 15, 'Inft', 18, 'Extc', 22);
 
# Extracting values using keys
print "\nPrinting values of Hash2\n";
print "computer = $stud2{'Comp'}";
print "\ninft = $stud2{Inft}";
print "\nextc = $stud2{'Extc'}\n";
 
 
# Initializing Hash3 using '=>'
%stud3 = ('Comp' => 45, 'Inft' => 42, 'Extc' => 35);
 
# printing elements of stud3
print "\nPrinting values of Hash3\n";
print "$stud3{'Comp'}\n";
print "$stud3{'Inft'}\n";
print "$stud3{'Extc'}\n";
 
# Initializing Hash4 using hyphen(-)
%stud4 = (-Comp => 5, -Inft => 15, -Extc => 25);
 
# Printing elements of stud4
print "\nPrinting values of Hash4\n";
print "$stud4{'-Comp'}\n";
print "$stud4{'-Inft'}\n";
print "$stud4{'-Extc'}";
Producción: 

Printing values of Hash1
10
20
30

Printing values of Hash2
computer = 15
inft = 18
extc = 22

Printing values of Hash3
45
42
35

Printing values of Hash4
5
15
25

 

Extracción de claves y valores

A veces existe la necesidad de extraer claves y valores de un hash para realizar varias operaciones en él. Operaciones como modificación, eliminación, adición de elementos, etc. Hash permite extraer estas claves y valores con el uso de funciones incorporadas. 
Se puede obtener una lista de todas las claves de un hash usando la función de claves .

Sintaxis: keys %HASH 
Devuelve una array de todas las claves presentes en el HASH

Ejemplo:  

Perl

# Initializing Hash with Key-Value pairs
%stud = ('Comp' => 45, 'Inft' => 42, 'Extc' => 35);
 
# Extracting keys from hash
@Key_array = keys %stud;
 
# Printing the extracted keys
print "Keys are :\n";
print "$Key_array[0]\n";
print "$Key_array[1]\n";
print "$Key_array[2]\n";

Producción: 

Keys are :
Comp
Extc
Inft

De manera similar, la función de valores se usa para obtener una lista de todos los valores.  

Sintaxis: valores %HASH 
Devuelve una array con todos los valores de HASH

Ejemplo:  

Perl

# Initializing Hash with Key-Value pairs
%stud = ('Comp' => 45, 'Inft' => 42, 'Extc' => 35);
 
# Extracting values from hash
@value_array = values %stud;
 
# Printing the extracted values
print "Values are :\n";
print "$value_array[0]\n";
print "$value_array[1]\n";
print "$value_array[2]\n";
Producción: 

Values are :
45
35
42

 

Publicación traducida automáticamente

Artículo escrito por rupanisweety 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 *