Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Clique
Clique

Na Aldeia

Há 54 visitantes online

3440 registros
0 hoje
17 nesta semana
2 neste mês

Boas vindas: Darshu

Estatística

Artigos: 963
Leituras: 5014201
Arquivados: 39
Downloads: 443
Baixados: 182427
Glossário: 1208
Bibliografia: 24
Links: 89
JoomlaWatch Stats 1.2.7 by Matej Koval

Visitas de onde?

89,2%Brasil Brasil
8,2%Portugal Portugal
0,8%EUA EUA
0,1%Espanha Espanha
0,1%Japão Japão

Visitantes

Hoje: 165
Ontem: 1988
Esta semana: 11978
Semana passada: 16142
Este mês: 6969
Mês passado: 69435
Total: 505818

Registro/Login

Para fazer login ou registrar-se

Usuários registrados têm algumas regalias!

Qui

20

Nov

2008


13:04

Linguagem Perl - Variáveis PDF Imprimir Indique esta página
Avaliação: / 1
PiorMelhor 
Tutoriais e Programação - Perl e CGI
Escrito por vovó Vicki   


Índice do Artigo
Linguagem Perl - Variáveis
Hash e Referências
Todas as páginas

Existem vários tipos e modos de referência a variáveis na linguagem Perl. Neste tutorial tentei destrinchar ao máximo o assunto.

Variáveis Simples (Escalares)

Variáveis são áreas de armazenamento nas quais podem ser guardados dados que serão utilizados durante a execução de um programa. O conteúdo de uma variável é denominado de "valor". Os valores de variáveis podem ser alterados a qualquer tempo.

Em Perl, uma variável simples, que contenha um número ou uma sequência de caracteres, é denominada de variável escalar. Exemplos:

$Nome_1 = "Matusalém";
$Idade_1 = 625;
$Nome_2 = "Pedro Bó";
$Idade_2 = sqrt($Idade);

Um pequeno script Perl usando variáveis escalares:

#!/usr/bin/perl
$Valor = 123456;
$Valorzinho = substr($Valor,1,3);
print $Valorzinho;

Uma escalar, ou seja, uma variável simples, é composta por um cifrão $ seguido do nome da variável. O cifrão sempre precisa estar presente se a variável for utilizada para receber um valor ou numa operação (como no exemplo acima, onde a variável $Idade aparece dentro da função sqrt() que calcula a raiz quadrada de um número).

Você pode definir escalares para conteúdo numérico ou para sequências de caracteres (strings). O tipo de conteúdo é decidido no momento em que se atribui o valor da escalar ou no momento em que ela é utilizada numa diretiva. Se o valor atribuído for uma sequência de caracteres, estes precisam estar entre aspas, simples ('caracteres') ou duplas ("caracteres"). Para maiores detalhes, veja Convenções para Sequência de Caracteres.

Observações: Os dados em Perl não são "tipados". Quando se tem uma sequência de caracteres constituída apenas por caracteres numéricos (ex. "7423.13"), pode-se efetuar cálculos numéricos com a mesma, sem nenhum problema. Da mesma maneira, pode-se tratar valores numéricos como uma sequência de caracteres. Para observar esta característica, verifique o pequeno script acima. Definiu-se $Valor como uma escalar numérica. Logo abaixo, utilizamos uma função típica para tratamento de strings, a substr(). Os parâmetros desta função significam: extrair, a partir do segundo caracter, três caracteres (o segundo caracter é solicitado através do parâmetro 1 porque em Perl, assim como na maioria das outras linguagens de programação, começa-se a contar a partir do zero). O resultado obtido, "234", é armazenado na escalar $Valorzinho. Caso você já programe em outra linguagem, então você poderá avaliar o grau de liberdade que a linguagem Perl oferece no tratamento de variáveis.

Matrizes (Arrays)

Matrizes são seqüências de grupos de escalares. Em Perl, as matrizes têm uma importância primordial porque oferecem um modo muito fácil de armazenar dados e de manipulá-los. Exemplo 1:

#!/usr/bin/perl
@Dados = ("Maria",23,"Curitiba","3o.Grau");
print $Dados[0], " tem ", $Dados[1], " anos, mora em ", $Dados[2],
   " e tem ", $Dados[3];

Exemplo 2:

#!/usr/bin/perl
for($i = 1;$i <= 9;$i++)
{
   $Valor = $i * $i;
   push(@Quadrados, $Valor);
}
 
for(@Quadrados)
{
   print $_, "\n";
}

Exemplo 3:

#!/usr/bin/perl
@Letra = ("a".."z");
print $Letra[2], "\n";

Em Perl, uma matriz é iniciada por um sinal de arroba @ seguido do nome da matriz. É possível inicializar uma matriz com valores predefinidos, como a matriz @Dados do exemplo 1. Note que os dados precisam estar entre parênteses e separados por vírgulas.

As matrizes também podem ser geradas dinamicamente, como se pode observar no exemplo 2: dentro de um loop, que conta de 1 até 9, a matriz @Quadrados é povoada dinamicamente com os quadrados dos números de 1 atá 9. Isto é possível graças ao uso da função push(), a qual adiciona elementos no final da matriz.

O exemplo 3 mostra uma variação especial. Para se povoar uma matriz com letras (de-até) ou com números (de-até) basta indicar o primeiro e o último caractere desejado, separados por dois pontos (no exemplo, a matriz @Letra é povoada com caracteres minúsculos de a até z).

Quando os valores de uma matriz são predefinidos, valem as mesmas regras das variáveis escalares: strings são indicadas entre aspas, valores numéricos não precisam de aspas. É claro que também é possível povoar uma matriz com escalares. Neste caso, a lista incorpora o valor das escalares correspondentes.

Para se referir a um determinado elemento de uma matriz, utiliza-se o nome da matriz precedido do sinal de cifrão $ (da mesma forma que nas escalares). Após o nome, segue o número do elemento da lista entre colchetes. O primeiro elemento é identificado por @NomeDaLista[0], o segundo por @NomeDaLista[1] e assim sucessivamente. No primeiro exemplo, logo acima, esta característica fica bem clara.

Ainda com referência aos 3 exemplos citados, seguem os dados das matrizes criadas e seus respectivos elementos.

@Dados $Dados[0] $Dados[1] $Dados[2] $Dados[3]
Maria 23 Curitiba 3o. Grau

@Quadrados
$Quadrados[0] 1
$Quadrados[1] 4
$Quadrados[2] 9
... ...
$Quadrados[7] 64
$Quadrados[8] 81
@Letras
$Letra[0] a
$Letra[1] b
$Letra[2] c
... ...
$Letra[24] y
$Letra[25] z

É muito simples atribuir o valor de um elemento de uma matriz a uma variável escalar. Basta a seguinte linha de comando: $Nome = $Dados[0];

Também é muito simples copiar uma matriz completa para outra matriz. Basta o comando: @NovaLista = @Quadrados;

Pode-se armazenar strings e valores numéricos numa mesma matriz, como no exemplo 1 acima. Também não existe limitação do número de elementos numa matriz. Pode-se, portanto, armazenar uma matriz inteira como elemento de uma outra matriz, ou seja, uma matriz B dentro de um elemento da matriz A. Um elemento da matriz "embutida" B pode, então, ser obtido através de @MAtrizA[2][4] (isto é, o terceiro elemento da matriz A é a matriz B e, desta, solicita-se o quinto elemento).

Mesmo sem uma definição prévia, pode-se atribuir um valor a uma matriz. Por exemplo, $Numeros[5] = 4321; cria a matriz @Numeros com seis elementos, $Numeros[0] a $Numeros[5]. Os primeiros 5 elementos estão vazios e o sexto elemento recebe o valor 4321.

O último elemento de uma matriz pode sempre ser acessado através de @NomeDaMatriz[-1]. O índice negativo -1 está reservado para tal fim.



Última atualização ( Qui, 20.11.2008 19:47 )
 

Topo

Topo