Assignació i variables

En els llenguatges de programació l'assignació és una operació que emmagatzema un valor en algun lloc de la memòria de l'ordinador al qual es pot accedir amb el seu nom.

A Perl 5 hi ha tres tipus de dades integrats: escalars, vectors i diccionaris (o vectors associatius). Els escalars poden contenir cadenes i números. Els vectors són llistes ordenades d'escalars als quals s'accedeix amb un índex. Els diccionaris són vectors associatius no ordenats en què s'utilitzen claus per accedir als valors. Les variables que contenen escalars, vectors o diccionaris duen el prefix $, @ i % respectivament.

Les variables es declaren normalment utilitzant el mot my. Per exemple:

my $x = 1;
say $x;

Exercici

Assigneu a una varibe y la cadena 'Hola món!' i imprimiu-la.

my $
say

Escalars

Depenent del que contingui la variable (un número o una cadena) hi ha diferents operadors que podeu utilitzar.

Diguem que voleu sumar dos valors numèrics:

my $x = 1;
my $y = 2;

say $x + $y;

O que voleu concatenar dues cadenes:

my $x = 'Hola';
my $y = 'vosaltres';

say $x . $y

Si provéssiu d'utilitzar + a les cadenes o . als números es convertirien automàticament al tipus adequat.

my $x = 1;
my $y = '2 cops';

say $x . $y;
say $x + $y;

Com podeu veure, al segon exemple la cadena '2 cops' s'ha convertit en un número, en aquest cas 2.

Exercici

Concateneu i imprimiu la cadena 'Resultat=' i la suma de 42 i 13.

my $x = ;
my $y = ;

say

Vectors

Els vectors poden contenir una llista d'escalars.

my @vector = (1, 2, 3);

say @vector;

Les manipulacions bàsiques dels vectors inclouen obtenir un element amb l'índex (començant des del 0), obtenir el darrer índex, encuar i empilar valors.

my @vector = (1, 2, 3);

# Obté el tercer element
say $vector[2];

# Obté el darrer índex
say $#vector;

# Encua el valor 4
push @vector, 4;
say @vector;

# Desencua el darrer valor
pop @vector;
say @vector;

# Desempila el primer valor
shift @vector;
say @vector;

# Empila el valor 0
unshift @vector, 0;
say @vector;

Probablement us haureu adonat que quan s'accedeix a un element d'un vector es canvia @ per $, ja que l'element del vector és un escalar, i els escalars duen el prefix $.

Exercici

Donat el vector que conté la llista (1, 2, 3, 4), imprimiu el tercer element.

my @vector = ;
say

Diccionaris

Els diccionaris o vectors associatius són col·leccions no-ordenades d'escalars als que es pot accedir mitjançant una clau. Normalment la clau és una cadena de text.

my %diccionari = ('clau1', 'valor1', 'clau2', 'valor2');

Enlloc d'utilitzar la coma per a separar les claus i els valors, Perl proporciona => com a operador més llegible, per exemple:

my %diccionari = (clau1 => 'valor1', clau2 => 'valor2');

Manipulacions bàsiques dels diccionaris

Com en el cas dels vectors, quan s'accedeix a una clau d'un diccionari, la variable esdevé un escalar i per això s'utilitza el símbol $ i les claus {}:

my %diccionari = (clau1 => 'valor1', clau2 => 'valor2');

say $diccionari{clau1};

Obtenir totes les claus i valors d'un diccionari

my %diccionari = (clau1 => 'valor1', clau2 => 'valor2');

say keys %diccionari;
say values %diccionari;