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

Tutoriais

Na Aldeia

Há 120 visitantes online

3630 registros
0 hoje
14 nesta semana
4 neste mês

Boas vindas: flor

Estatística

Membros: 3639
Artigos: 1045
Links: 90
Leituras: 6681366

Login



Kanji da hora




Faça contato






Sex

21

Nov

2008


17:04

Linguagem Perl - Strings PDF Imprimir Indique esta página
(2 votos, média 5.0 de 5)
Escrito por vovó Vicki   


Índice do Artigo
Linguagem Perl - Strings
Strings em listas
Subsituições
Todas as páginas

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.



Última atualização ( Sex, 21.11.2008 21:21 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons