Atribuição e variáveis

Atribuição, em linguagens de programação, é uma operação que armazena um valor em algum lugar da memória do computador, que pode ser acessado por um nome. Esse local de armazenamento é chamado de variável.

Em Perl 5 há três tipos principais de dados: escalares, arrays e hashes (ou arrays associativos). Escalares (scalars) podem armazenar strings e números. Arrays são listas ordenadas de escalares cujo valor é acessado por um índice. Hashes são listas não ordenadas de escalares cujo valor é acessado por chaves. Variáveis que armazenam escalares, arrays e hashes são prefixados com $, @ e %, respectivamente.

Variáveis costumam ser declaradas usando a palavra-chave my. Por exemplo:

my $x = 1;
say $x;

Exercício

Atribua a uma variável chamada y a string 'Alô, mundo! e imprima seu conteúdo.

my $
say

Escalares

Dependendo do que a variável guarda (um número, uma string) você poderá usar diferentes operadores.

Digamos que você queira somar dois valores numéricos:

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

say $x + $y;

Ou talvez você queira concatenar duas strings diferentes:

my $x = 'Alô';
my $y = 'Você';

say $x . $y

Se você tentar usar + em strings ou . em números as variáveis serão automaticamente convertidas aos seus tipos apropriados.

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

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

Como pode ver no segundo exemplo a string '2 vezes' foi convertida para um número, o 2.

Exercício

Concatene e imprima a string 'Resultado=' seguida da soma de 42 com 13.

my $x = ;
my $y = ;

say

Arrays

Arrays podem armazenar listas de escalares.

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

say @array;

A manipulação básica de arrays incluem obter o elemento pelo seu índice (começando de 0), obtendo o último índice, empilhando e retirando elementos.

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

# obtém o terceiro elemento
say $array[2];

# obtém o índice do último elemento
say $#array;

push @array, 4;
say @array;

pop @array;
say @array;

shift @array;
say @array;

unshift @array, 0;
say @array;

Como você provavelmente percebeu, ao acessar um elemento do array nós trocamos @ por $, porque o elemento do array é um escalar, e escalares usam o símbolo $.

Exercício

Crie um array com a lista (1, 2, 3, 4) e imprima o terceiro elemento.

my @array = ;
say

Hashes

Hashes ou arrays associativos são coleção não ordenadas de escalares que podem ser acessados por uma chave. Essa chave normalmente é uma string.

my %hash = ('chave1', 'valor1', 'chave2', 'valor2');

Em vez de usar vírgula para separar chaves e valores, Perl oferece um operador mais legível, o =>. Por exemplo:

my %hash = (chave1 => 'valuor1', chave2 => 'valor2');

Manipulação básica de hashes

Para acessar um elemento de um hash, colocamos a chave desejada entre chaves {}. Assim como arrays, a variável armazenada é um escalar, então usamos o símbolo $.

my %hash = (chave1 => 'valor1', chave2 => 'valor2');

say $hash{chave1};

Obtendo todas as chaves e valores de um hash

my %hash = (chave1 => 'valor1', chave2 => 'valor2');

say keys %hash;
say values %hash;