En Perl, los hashes son una estructura de datos muy poderosa y flexible que permite almacenar pares de clave-valor. A diferencia de los arrays, donde los elementos se acceden mediante índices numéricos, en los hashes se accede a los valores mediante claves, que pueden ser cadenas de texto.
Conceptos Clave
- Definición de Hashes: Un hash es una colección de pares de clave-valor.
- Sintaxis de Hashes: Los hashes se definen utilizando el símbolo
%
. - Acceso a Elementos: Se accede a los valores del hash utilizando las claves.
- Operaciones Comunes: Inserción, eliminación y actualización de pares de clave-valor.
Definición y Sintaxis de Hashes
Para definir un hash en Perl, utilizamos el símbolo %
seguido del nombre del hash. Los pares de clave-valor se especifican dentro de una lista, separados por comas, y cada par se separa por una coma.
# Definición de un hash my %capitales = ( "España" => "Madrid", "Francia" => "París", "Italia" => "Roma" );
En este ejemplo, hemos definido un hash %capitales
que contiene tres pares de clave-valor.
Acceso a Elementos del Hash
Para acceder a un valor en un hash, utilizamos la clave correspondiente entre llaves {}
.
# Acceso a un valor en el hash my $capital_espana = $capitales{"España"}; print "La capital de España es $capital_espana\n"; # Salida: La capital de España es Madrid
Operaciones Comunes
Inserción de Elementos
Podemos añadir nuevos pares de clave-valor al hash de la siguiente manera:
Eliminación de Elementos
Para eliminar un par de clave-valor, utilizamos la función delete
.
Actualización de Elementos
Para actualizar el valor de una clave existente, simplemente asignamos un nuevo valor a esa clave.
Iteración sobre Hashes
Podemos iterar sobre los elementos de un hash utilizando la función each
, que devuelve pares de clave-valor uno a uno.
# Iterar sobre un hash while (my ($pais, $capital) = each %capitales) { print "La capital de $pais es $capital\n"; }
También podemos utilizar las funciones keys
y values
para obtener listas de claves y valores, respectivamente.
# Obtener todas las claves my @paises = keys %capitales; # Obtener todos los valores my @capitales = values %capitales;
Ejemplo Práctico
Vamos a crear un programa que gestione un hash de contactos, donde las claves son nombres y los valores son números de teléfono.
# Definición del hash de contactos my %contactos = ( "Juan" => "123-456-789", "Ana" => "987-654-321", "Luis" => "555-555-555" ); # Añadir un nuevo contacto $contactos{"María"} = "111-222-333"; # Actualizar el número de teléfono de un contacto $contactos{"Ana"} = "999-888-777"; # Eliminar un contacto delete $contactos{"Luis"}; # Imprimir todos los contactos while (my ($nombre, $telefono) = each %contactos) { print "$nombre: $telefono\n"; }
Ejercicio Práctico
Ejercicio: Crea un hash que almacene los nombres de varios países y sus respectivas poblaciones. Luego, realiza las siguientes operaciones:
- Añade un nuevo país y su población.
- Actualiza la población de un país existente.
- Elimina un país del hash.
- Imprime todos los países y sus poblaciones.
Solución:
# Definición del hash de poblaciones my %poblaciones = ( "China" => 1400000000, "India" => 1300000000, "Estados Unidos" => 330000000 ); # Añadir un nuevo país $poblaciones{"Brasil"} = 210000000; # Actualizar la población de un país existente $poblaciones{"India"} = 1350000000; # Eliminar un país del hash delete $poblaciones{"Estados Unidos"}; # Imprimir todos los países y sus poblaciones while (my ($pais, $poblacion) = each %poblaciones) { print "$pais: $poblacion\n"; }
Conclusión
En esta sección, hemos aprendido sobre los hashes en Perl, una estructura de datos esencial para almacenar y manipular pares de clave-valor. Hemos cubierto la definición, acceso, y operaciones comunes con hashes, así como ejemplos prácticos y ejercicios para reforzar los conceptos. En el próximo módulo, exploraremos cómo manejar archivos en Perl, lo que nos permitirá leer y escribir datos desde y hacia archivos en el sistema.
Curso de Programación en Perl
Módulo 1: Introducción a Perl
Módulo 2: Programación Básica en Perl
Módulo 3: Trabajando con Datos
Módulo 4: Programación Intermedia en Perl
Módulo 5: Programación Avanzada en Perl
- Expresiones Regulares Avanzadas
- Interacción con Bases de Datos usando DBI
- Programación Web con Perl
- Multithreading