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 MadridOperaciones 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
