A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Linguagem Perl - Strings

Sex

21

Nov

2008


18:04

(2 votos, média 5.00 de 5) 


São muitas as possibilidades de manipular strings que a linguagem Perl oferece. Neste tutorial vamos ver os principais recursos disponíveis.

Convenções para Strings

Em Perl, as strings podem ficar entre aspas simples ou duplas. A diferença entre as notações é que, numa sequência de caracteres entre aspas duplas, todos os caracteres especiais são interpretados. Numa sequência de caracteres entre aspas simples, apenas os caracteres especiais mais importantes são interpretados. Exemplos:

$Escalar01 = "Aqui segue uma\nQuebra de linha"; $Escalar02 = "Aqui segue uma\fQuebra de página"; $Escalar03 = "Aqui segue um\bBackspace"; $Escalar04 = "Aqui segue um\rRetorno de carro"; $Escalar05 = "Aqui segue um\tTab"; $Escalar06 = "Aqui segue um\vTab Vertical"; $Escalar07 = "Aqui segue um\aSinal de alarme"; $Escalar08 = "Aqui segue um\012 Carcater com valor octal de 012"; $Escalar09 = "Aqui segue um\x7f Caracter com valor hexadecimal de 7f"; $Escalar10 = "Aqui segue um\cC Control-C (aqui: [Ctrl]+[C])"; $Escalar11 = "Aqui seguem\"Aspas"; $Escalar12 = "Aqui segue uma\\Contrabarra"; $Escalar13 = "Este \lA é interpretado como minúsculo (a)"; $Escalar14 = "Esta \LPALAVRA\E é interpretada como minúscula (palavra)"; $Escalar15 = "Este \ua é interpretado como A maiúsculo"; $Escalar16 = "Esta \Upalavra\E é interpretada como PALAVRA em maiúsculo"; $Escalar17 = 'Aqui só \\ e\' são interpretados';

Nos exemplos acima, as escalares $Escalar01 a $Escalar16 estão entre aspas duplas. Por este motivo podem conter todos os caracteres especiais.

Os caracteres especiais são precedidos por uma contrabarra \ seguida por uma letra ou um número em notação octal ou hexadecimal.

A $Escalar17 foi colocada entre aspas simples. Neste caso, apenas os caracteres especiais nela utilizados são permitidos, ou seja, \' para indicar aspa simples e \\ para indicar contrabarra.

info Observação: Dos sinais especiais da linguagem Perl associada à CGI, o sinal \n tem uma importância especial. É necessário, por exemplo, quando um script CGI envia dados de uma página HTML para um navegador. O envio de dados tem três fases: o tipo de dado que será transmitido, uma linha em branco e os dados propriamente ditos. A linha em branco é obtida através do sinal especial \n. O comando típico para a fase 1 e 2 da transmissão pode ser obtida em apenas uma linha através de

print "Content-type: text/html\n\n";

Extraindo partes de strings

Pode-se extrair uma sequência de caracteres ou um único caracter de uma string. Veja o exemplo:

#!/usr/bin/perl $Url = "http://www.numaboa.com/index.html"; $Stop = index($Url,":"); $Protocolo = substr($Url,0,$Stop); $Start = index($Url,"//") + 2; $Dominio = substr($Url,$Start); $Stop = index($Dominio,"/"); $Dominio = substr($Dominio,0,$Stop); $Start = rindex($Url,"/") + 1; $NomeArq = substr($Url,$Start); $Compr_Url = length($Url); print "O protocolo utilizado pelo endereço da URL é: ", $Protocolo, "\n"; print "O domínio da URL é: ", $Dominio, "\n"; print "O nome do arquivo da URL é: ", $NomeArq, "\n"; print "O endereço URL tem um comprimento de ", $Compr_Url, " caracteres\n";

Neste exemplo extrai-se de um endereço URL, atribuído à escalar $Url, o protocolo (http), o domínio (www.numaboa.com) e o nome do arquivo (index.html). Todas as três partes são atribuídas a escalares próprias. O protocolo está em $Protocolo, o domínio em $Dominio e o nome do arquivo em $NomeArq. Ao final do programa as partes são apresentadas utilizando-se a função print.

A função Perl com a qual é possível extrair uma parte de uma cadeia de caracteres chama-se substr. Esta função possui dois ou três argumentos que devem ser passados como parâmetros. O primeiro parâmetro é a string da qual a sequência de caracteres deve ser extraída. O segundo parâmetro é um número. Este número indica a partir de qual caracter da string a sub-string deve ser extraída. O primeiro caractere da string é o de número 0. Por exemplo, substr("Pedro Henrique",2) retorna "dro Henrique". Como terceiro parâmetro, opcional, pode-se indicar o número de caracteres que se quer extrair. Por exemplo, substr("Pedro Henrique",0,5) retorna Pedro.

Muitas vezes, porém, desconhece-se a posição onde uma parte desejada se inicia, mas se conhece a estrutura da string. Isto também acontece no exemplo acima. A string é um endereço URL e endereços URL têm um estrutura conhecida. Quando se quer extrair o domínio de uma URL, sabe-se que o endereço do domínio se inicia logo após as duas barras //. A Perl oferece para isto as funções index e rindex.

Com index obtém-se o início da posição da primeira ocorrência de um caractere ou seqüência de caracteres e com rindex obtém-se o início da posição da última ocorrência. Ambas as funções possuem dois argumentos. O primeiro é a string que será pesquisada, o segundo é a sub-string que é procurada. As duas funções retornam um número. Este número pode ser utilizado como segundo parâmetro da função substr. Por exemplo, index("Os micos fazem micagens","mic") retorna 3, o início da primeira ocorrência de "mic", e rindex("Os micos fazem micagens","mic") retorna 15, o início da última ocorrência.

É aconselhável atribuir os valores de retorno destas funções a escalares próprias, como no exemplo acima. Estas variáveis escalares podem ser confortavelmente retrabalhadas posteriormente.

info Observação: Outra função interessante para strings é a length (length = comprimento), também usada no exemplo. Esta função retorna o número de caracteres que compõem uma string.

Informações adicionais