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

  1. Definición de Hashes: Un hash es una colección de pares de clave-valor.
  2. Sintaxis de Hashes: Los hashes se definen utilizando el símbolo %.
  3. Acceso a Elementos: Se accede a los valores del hash utilizando las claves.
  4. 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:

# Añadir un nuevo par clave-valor
$capitales{"Alemania"} = "Berlín";

Eliminación de Elementos

Para eliminar un par de clave-valor, utilizamos la función delete.

# Eliminar un par clave-valor
delete $capitales{"Italia"};

Actualización de Elementos

Para actualizar el valor de una clave existente, simplemente asignamos un nuevo valor a esa clave.

# Actualizar el valor de una clave existente
$capitales{"Francia"} = "Marsella";

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:

  1. Añade un nuevo país y su población.
  2. Actualiza la población de un país existente.
  3. Elimina un país del hash.
  4. 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.

© Copyright 2024. Todos los derechos reservados