En este módulo, exploraremos cómo manejar estructuras de datos complejas en Perl. Las estructuras de datos complejas son esenciales para organizar y manipular datos de manera eficiente en programas más avanzados. Aprenderemos a combinar arreglos, hashes y referencias para crear estructuras de datos más sofisticadas.

Contenidos

Introducción a las Estructuras de Datos Complejas

Las estructuras de datos complejas en Perl se construyen utilizando referencias. Una referencia es un escalar que "apunta" a otra variable o estructura de datos. Esto permite crear estructuras anidadas como arreglos de arreglos, hashes de arreglos, etc.

Ejemplo de Referencia

my @array = (1, 2, 3);
my $array_ref = \@array;  # Referencia al arreglo @array
print $array_ref->[0];    # Imprime 1

Arreglos de Arreglos

Un arreglo de arreglos es una estructura donde cada elemento del arreglo principal es una referencia a otro arreglo.

Ejemplo de Arreglo de Arreglos

my @array_of_arrays = (
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
);

# Acceder a elementos
print $array_of_arrays[0]->[1];  # Imprime 2
print $array_of_arrays[2]->[0];  # Imprime 7

Explicación

  • @array_of_arrays es un arreglo que contiene referencias a otros arreglos.
  • print $array_of_arrays[0]->[1]; accede al segundo elemento del primer arreglo.

Hashes de Arreglos

Un hash de arreglos es una estructura donde cada valor del hash es una referencia a un arreglo.

Ejemplo de Hash de Arreglos

my %hash_of_arrays = (
    'fruits' => ['apple', 'banana', 'cherry'],
    'vegetables' => ['carrot', 'broccoli', 'pea']
);

# Acceder a elementos
print $hash_of_arrays{'fruits'}->[1];  # Imprime banana
print $hash_of_arrays{'vegetables'}->[2];  # Imprime pea

Explicación

  • %hash_of_arrays es un hash donde cada valor es una referencia a un arreglo.
  • print $hash_of_arrays{'fruits'}->[1]; accede al segundo elemento del arreglo asociado con la clave 'fruits'.

Arreglos de Hashes

Un arreglo de hashes es una estructura donde cada elemento del arreglo principal es una referencia a un hash.

Ejemplo de Arreglo de Hashes

my @array_of_hashes = (
    { name => 'Alice', age => 30 },
    { name => 'Bob', age => 25 },
    { name => 'Charlie', age => 35 }
);

# Acceder a elementos
print $array_of_hashes[0]->{name};  # Imprime Alice
print $array_of_hashes[1]->{age};   # Imprime 25

Explicación

  • @array_of_hashes es un arreglo que contiene referencias a hashes.
  • print $array_of_hashes[0]->{name}; accede al valor asociado con la clave 'name' en el primer hash.

Hashes de Hashes

Un hash de hashes es una estructura donde cada valor del hash es una referencia a otro hash.

Ejemplo de Hash de Hashes

my %hash_of_hashes = (
    'person1' => { name => 'Alice', age => 30 },
    'person2' => { name => 'Bob', age => 25 }
);

# Acceder a elementos
print $hash_of_hashes{'person1'}->{name};  # Imprime Alice
print $hash_of_hashes{'person2'}->{age};   # Imprime 25

Explicación

  • %hash_of_hashes es un hash donde cada valor es una referencia a otro hash.
  • print $hash_of_hashes{'person1'}->{name}; accede al valor asociado con la clave 'name' en el hash asociado con la clave 'person1'.

Ejercicios Prácticos

Ejercicio 1: Crear un Arreglo de Arreglos

Crea un arreglo de arreglos que contenga tres arreglos, cada uno con tres números. Imprime el segundo número del tercer arreglo.

# Solución
my @array_of_arrays = (
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
);

print $array_of_arrays[2]->[1];  # Imprime 8

Ejercicio 2: Crear un Hash de Arreglos

Crea un hash de arreglos que contenga dos claves: 'animals' y 'birds'. La clave 'animals' debe tener un arreglo con tres animales y la clave 'birds' debe tener un arreglo con tres aves. Imprime el primer animal y la segunda ave.

# Solución
my %hash_of_arrays = (
    'animals' => ['dog', 'cat', 'cow'],
    'birds' => ['sparrow', 'eagle', 'parrot']
);

print $hash_of_arrays{'animals'}->[0];  # Imprime dog
print $hash_of_arrays{'birds'}->[1];    # Imprime eagle

Ejercicio 3: Crear un Arreglo de Hashes

Crea un arreglo de hashes que contenga dos hashes, cada uno con las claves 'title' y 'author'. Imprime el autor del segundo libro.

# Solución
my @array_of_hashes = (
    { title => 'Book1', author => 'Author1' },
    { title => 'Book2', author => 'Author2' }
);

print $array_of_hashes[1]->{author};  # Imprime Author2

Ejercicio 4: Crear un Hash de Hashes

Crea un hash de hashes que contenga dos claves: 'student1' y 'student2'. Cada clave debe tener un hash con las claves 'name' y 'grade'. Imprime el nombre del primer estudiante y la calificación del segundo estudiante.

# Solución
my %hash_of_hashes = (
    'student1' => { name => 'Alice', grade => 'A' },
    'student2' => { name => 'Bob', grade => 'B' }
);

print $hash_of_hashes{'student1'}->{name};  # Imprime Alice
print $hash_of_hashes{'student2'}->{grade}; # Imprime B

Conclusión

En esta sección, hemos aprendido a manejar estructuras de datos complejas en Perl utilizando referencias. Estas estructuras son fundamentales para organizar y manipular datos de manera eficiente en programas más avanzados. Hemos cubierto arreglos de arreglos, hashes de arreglos, arreglos de hashes y hashes de hashes, y hemos practicado con ejercicios prácticos para reforzar los conceptos aprendidos.

En el próximo módulo, exploraremos cómo trabajar con módulos y paquetes en Perl, lo que nos permitirá organizar mejor nuestro código y reutilizar componentes de manera eficiente.

© Copyright 2024. Todos los derechos reservados