Els hashes són una estructura de dades fonamental en Perl que permeten emmagatzemar parelles clau-valor. A diferència dels arrays, que utilitzen índexs numèrics, els hashes utilitzen claus (keys) per accedir als seus valors associats. Això els fa molt útils per a situacions on necessitem una associació directa entre dos elements, com ara un diccionari.

Conceptes Clau

  1. Definició de Hashes: Un hash és una col·lecció de parelles clau-valor.
  2. Accés als Valors: Els valors es poden accedir mitjançant les seves claus.
  3. Manipulació de Hashes: Afegir, eliminar i modificar elements en un hash.
  4. Iteració sobre Hashes: Recórrer tots els elements d'un hash.

Definició de Hashes

En Perl, els hashes es defineixen utilitzant el símbol %. Aquí teniu un exemple de com definir un hash:

# Definició d'un hash
my %fruits = (
    'apple'  => 'red',
    'banana' => 'yellow',
    'grape'  => 'purple'
);

En aquest exemple, les claus són 'apple', 'banana' i 'grape', i els valors associats són 'red', 'yellow' i 'purple', respectivament.

Accés als Valors

Per accedir a un valor en un hash, utilitzem la clau corresponent:

# Accés a un valor en un hash
my $color = $fruits{'apple'};
print "The color of apple is $color\n";  # Output: The color of apple is red

Manipulació de Hashes

Afegir Elements

Podem afegir noves parelles clau-valor a un hash de la següent manera:

# Afegir un nou element
$fruits{'orange'} = 'orange';

Modificar Elements

Per modificar un valor existent, simplement assignem un nou valor a la clau corresponent:

# Modificar un valor existent
$fruits{'banana'} = 'green';

Eliminar Elements

Per eliminar una parella clau-valor, utilitzem la funció delete:

# Eliminar un element
delete $fruits{'grape'};

Iteració sobre Hashes

Podem recórrer tots els elements d'un hash utilitzant un bucle foreach:

# Iteració sobre un hash
foreach my $key (keys %fruits) {
    print "$key => $fruits{$key}\n";
}

Aquest codi imprimirà totes les parelles clau-valor del hash.

Exercicis Pràctics

Exercici 1: Creació i Accés a Hashes

  1. Defineix un hash anomenat %capitals que contingui les següents parelles clau-valor:
    • 'Spain' => 'Madrid'
    • 'France' => 'Paris'
    • 'Italy' => 'Rome'
  2. Accedeix i imprimeix el valor associat a la clau 'France'.

Solució

# Definició del hash
my %capitals = (
    'Spain'  => 'Madrid',
    'France' => 'Paris',
    'Italy'  => 'Rome'
);

# Accés al valor
my $capital_of_france = $capitals{'France'};
print "The capital of France is $capital_of_france\n";  # Output: The capital of France is Paris

Exercici 2: Manipulació de Hashes

  1. Afegeix una nova parella clau-valor al hash %capitals: 'Germany' => 'Berlin'.
  2. Modifica el valor associat a la clau 'Italy' per 'Rome'.
  3. Elimina la parella clau-valor amb la clau 'Spain'.
  4. Itera sobre el hash i imprimeix totes les parelles clau-valor.

Solució

# Afegir un nou element
$capitals{'Germany'} = 'Berlin';

# Modificar un valor existent
$capitals{'Italy'} = 'Rome';

# Eliminar un element
delete $capitals{'Spain'};

# Iteració sobre el hash
foreach my $country (keys %capitals) {
    print "$country => $capitals{$country}\n";
}

Errors Comuns i Consells

  1. Ús de Claus Inexistents: Intentar accedir a una clau que no existeix en el hash retornarà undef. És important comprovar si una clau existeix abans d'accedir-hi.

    if (exists $capitals{'Portugal'}) {
        print "The capital of Portugal is $capitals{'Portugal'}\n";
    } else {
        print "Portugal is not in the hash\n";
    }
    
  2. Confusió entre Arrays i Hashes: Recorda que els arrays utilitzen índexs numèrics mentre que els hashes utilitzen claus. Assegura't d'utilitzar el símbol correcte (@ per arrays i % per hashes).

Conclusió

Els hashes són una eina poderosa en Perl per gestionar dades associatives. Hem après com definir, accedir, manipular i iterar sobre hashes. Amb aquests coneixements, estàs preparat per utilitzar hashes en els teus projectes Perl per emmagatzemar i gestionar dades de manera eficient. En el següent tema, explorarem la gestió de fitxers en Perl, una habilitat essencial per a qualsevol programador.

© Copyright 2024. Tots els drets reservats