Les referències són una característica poderosa de Perl que permeten als programadors crear estructures de dades complexes, com ara arrays de hashes, hashes de arrays, i molt més. Les referències són essencials per a la programació avançada en Perl, ja que permeten manipular dades de manera més flexible i eficient.

Què és una Referència?

Una referència és un escalar que apunta a una altra variable o estructura de dades. En altres paraules, és un punter a una altra ubicació de memòria. Les referències es poden crear per a qualsevol tipus de dades en Perl: escalars, arrays, hashes, subrutines, etc.

Creació de Referències

Per crear una referència a una variable, utilitzem l'operador de referència \. Aquí teniu alguns exemples:

# Referència a un escalar
my $scalar = 10;
my $scalar_ref = \$scalar;

# Referència a un array
my @array = (1, 2, 3);
my $array_ref = \@array;

# Referència a un hash
my %hash = (key1 => 'value1', key2 => 'value2');
my $hash_ref = \%hash;

# Referència a una subrutina
sub hello {
    print "Hello, World!\n";
}
my $sub_ref = \&hello;

Accés a Dades a través de Referències

Per accedir a les dades a través d'una referència, utilitzem l'operador de desreferència. Aquí teniu alguns exemples:

# Desreferenciar un escalar
print $$scalar_ref;  # Imprimeix 10

# Desreferenciar un array
print @{$array_ref};  # Imprimeix 123

# Desreferenciar un hash
print %{$hash_ref};  # Imprimeix key1value1key2value2

# Desreferenciar i cridar una subrutina
&{$sub_ref}();  # Imprimeix Hello, World!

Referències Anònimes

Les referències anònimes són referències a estructures de dades que no tenen un nom explícit. Són molt útils per crear estructures de dades complexes. Aquí teniu alguns exemples:

# Referència anònima a un array
my $anon_array_ref = [1, 2, 3];

# Referència anònima a un hash
my $anon_hash_ref = {key1 => 'value1', key2 => 'value2'};

Estructures de Dades Complexes

Les referències permeten crear estructures de dades complexes, com ara arrays de hashes o hashes de arrays. Aquí teniu alguns exemples:

# Array de hashes
my @array_of_hashes = (
    {name => 'Alice', age => 30},
    {name => 'Bob', age => 25},
);

# Accés a dades en un array de hashes
print $array_of_hashes[0]->{name};  # Imprimeix Alice

# Hash de arrays
my %hash_of_arrays = (
    group1 => [1, 2, 3],
    group2 => [4, 5, 6],
);

# Accés a dades en un hash de arrays
print $hash_of_arrays{group1}->[0];  # Imprimeix 1

Exercicis Pràctics

Exercici 1: Creació i Accés a Referències

  1. Crea una referència a un array que conté els números de l'1 al 5.
  2. Imprimeix el tercer element de l'array a través de la referència.

Solució:

# Creació de la referència
my @numbers = (1, 2, 3, 4, 5);
my $numbers_ref = \@numbers;

# Accés al tercer element
print $numbers_ref->[2];  # Imprimeix 3

Exercici 2: Estructures de Dades Complexes

  1. Crea un hash de arrays on cada clau és el nom d'un grup i el valor és una llista de membres del grup.
  2. Afegeix un nou membre a un dels grups.
  3. Imprimeix tots els membres d'un dels grups.

Solució:

# Creació del hash de arrays
my %groups = (
    group1 => ['Alice', 'Bob'],
    group2 => ['Charlie', 'David'],
);

# Afegeix un nou membre a group1
push @{$groups{group1}}, 'Eve';

# Imprimeix tots els membres de group1
print join(", ", @{$groups{group1}});  # Imprimeix Alice, Bob, Eve

Resum

En aquesta secció, hem après què són les referències en Perl i com es poden utilitzar per crear estructures de dades complexes. Hem vist com crear referències a variables, com accedir a les dades a través de referències, i com treballar amb referències anònimes. També hem explorat com utilitzar referències per construir arrays de hashes i hashes de arrays. Aquestes habilitats són fonamentals per a la programació avançada en Perl i ens preparen per a temes més avançats en els següents mòduls.

© Copyright 2024. Tots els drets reservats