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.
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);
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'}";
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
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";
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