Split: Dividindo uma String
Uma tarefa muito comum quando utilizamos o Perl para manipular textos é o de separar e dividir uma String – seja ela uma palavra ou uma frase. O split é uma função nativa do Perl que realiza com extrema eficiência esta tarefa. Dado uma String e uma condição, ele realiza uma varredura na String a procura de algo que corresponda o que for definido na regex da condição. Conforme vão sendo encontrados resultados, o split vai retornando os mesmos. Veja sua sintaxe:
($retorno1,$retorno2) = split (/[condição]/,$frase,$limite);
- As variáveis $retorno1 e $retorno2 receberão os dois dados que forem separados, cada um para a respectiva variável.
- A condição pode ser expressa em forma de String ou expressão regular (regex) (Veja a tabela de regex).
- O limite é um parâmetro opcional que só precisa ser definido se for necessário limitar o número de retornos.
No split podemos especificar quantas variáveis de retorno quisermos. Se o número de dados retornados for indefinido, podemos definiro retorno para uma array, da seguinte forma:
(@retornos) = split (/[condição]/,$frase,$limite);
Vejamos alguns exemplos práticos sobre como funciona o split:
$frase = “Campinas – SP”;
($cidade,$estado) = split(” – “,$frase); # Divide a frase por ” – “print “Eu moro em $cidade que fica no estado de $estado”;
O exemplo acima produzirá o seguinte resultado:
Eu moro em Campinas que fica no estado de SP
Podemos também usar regex para expressar as condições.
Digamos que temos uma String e queremos separá-la pelos números contidos nela.
Podemos usar a regex d+ que identifica os numeros contidos na String. Veja um exemplo:
$frase = “ABC1DEF2GHI”;
($div1,$div2,$div3) = split(/d+/,$frase,3);print $div1.”n”; print $div2.”n”; print $div3.”n”;
O código acima mostrará o seguinte na tela:
ABC DEF GHI
Como último exemplo, podemos fazer uma separação de vários ítens de uma String.
Vamos pegar uma frase longa que não sabemos o número de retornos.
$frase = “O-rato-roeu-a-roupa-do-Rei-de-Roma”;
(@novaFrase) = split(/-/,$frase); # O retorno é feito na array @novaFraseprint $novaFrase[0].”n”;
print $novaFrase[1].”n”;
print $novaFrase[2].”n”;
(…)
print $novaFrase[8].”n”;
Isto irá separar a frase por - e produzirá o seguinte resultado na tela:
O rato roeu a roupa do Rei de Roma
Note que não informamos ao split o número de variáveis que seriam retornadas e nem mesmo o limite, pois tudo que ele for encontrando ele já vai incluindo na array especificada.
Para obtermos o valor, basta acessar o array informando suas respectivas posições para encontrar os ítens retornados.
Enfim, o split é certamente uma das funções mais importantes do Perl, e um fator que faz de nossa linguagem ser a melhor quando o assunto é manipulação de texto.
Até a próxima!