como mencionado antes. Por exemplo, a expressao (" "x30) produz 30 espacos. Matrizes associativas Uma lista comum de matriz permite acessar seus elementos atraves de numeros. O primeiro elemento da matriz @comida e $comida[0]. O segundo e $comida[1], assim por diante, sendo que o ultimo elemento e $comida[$#comida]. Mas o Perl tambem permite criar matrizes que sao acessadas por uma string. Estas sao chamadas de matrizes associativas. Para definir uma matriz associativa, usamos a notacao usual com parenteses, mas a matriz agora e prefixada por um sinal %. Suponha que nos queremos criar uma matriz de pessoas com suas idades. Ela pode ser algo como: %idades = ("Michael Caine", 39,"Den", 34,"Angie", 27,"Willy", "21 anos de cachorro","A rainha mae", 108); Agora podemos encontrar a idade de cada pessoa com as seguintes expressoes: $idade{"Michael Caine"}; # Retorna 39$idade{"Den"}; # Retorna 34$idade{"Angie"}; # Retorna 27$idade{"Willy"}; # Retorna "21 anos de cachorro"$idade{"A rainha mae"}; # Retorna 108 Note que como na matriz comum, cada sinal % foi alterado para um $ para acessar um elemento individual porque cada elemento e escalar. Mas, de forma diferente da lista comum, onde o indice e colocado entre parenteses, a ideia esta em facilitar o acesso atraves da associacao de cada par de elementos. Uma matriz associativa pode ser convertida em uma comum apenas atribuindo ela a uma variavel @, e vice-versa. Note porem que a conversao nao coloca os elementos pares em ordem, como veremos adiante; @info = %idades; # @info e uma lista comum. Ela tem agora 10 elementos $info[5]; # retorna o valor 27 %maisidades = @info; # %maisidades tem agora 5 pares de elementos Operadores Variaveis de Ambiente Operadores Matrizes associativas nao ordenam seus elementos (elas sao como grandes tabelas confusas) mas e possivel acessar todos seus elementos usando funcoes de chaves e funcoes de valores: foreach $pessoa (keys %idades){print "Eu sei a idade de $pessoa\n";}foreach $idade (values %idades){print "Alguem tem $idade\n";} Quando keys e chamada, ela retorna uma lista de indices da matriz associativa. Quando values e chamada, ela retorna uma lista dos valores da matriz. Essas funcoes retornam suas listas na mesma ordem, mas esta ordem nao tem nada a ver com a ordem em que os elementos foram inseridos. Quando keys e values sao chamadas em um contexto escalar, elas retornam o numero de pares na matriz associativa. Existe tambem um funcao que retorna uma lista de dois elementos de uma chave e seu valor. Cada vez que e chamada, ela retorna outro par de elementos: while (($pessoa, $idade) = each(%idades)){print "$pessoa tem $idade\n";} Variaveis de Ambiente Quando voce roda um programa em Perl, ou qualquer script no Unix, certas variaveis de ambientes sao setadas. Algumas podem ser como $ENV{'USER'} que contem o username (nome do usuario logado). Quando voce roda um script CGI na WWW, existem variaveis de ambiente que possuem outras informacoes uteis. Todas essas variaveis e seus valores sao armazenados na matriz associativa %ENV em que as chaves sao os nomes das variaveis. O seguinte exemplo retorna todas as suas variaveis de ambiente: while (($chave, $valor) = each(%ENV)){print "$chave e