Está gostando da leitura?
Está aprendendo?
Compre o livro novo que traz mais conteúdo, texto atualizado e ilustrações!
característica como fazer ------------------------------------------------------- busca comando m// substituição comando s/// divisão comando split ER crua 'entre aspas simples' ignore M/m modificadores i, (?i) global modificador g
(m-i:3) Como resumir o básico sobre ERs do Perl em
algumas linhas? Vou tentar. Vamos ver o básico do básico, sem entrar
em exceções e sem mostrar as duzentas e sessenta e sete outras
maneiras de se fazer a mesma coisa.
Para ignorar a diferença entre maiúsculas e minúsculas, temos o
modificador i, ou o metacaractere (?i)
, e para especificarmos uma ER no formato cru, devemos colocá-la entre
'aspas simples'. Atenção especial aqui, pois o Perl tem a
interpretação de strings e a interpretação de /ERs/ também
e ambas fazem expansão de variáveis:
Outros modificadores possíveis são o x para poder
colocar #comentários no meio da ER e o m do
modo multilinha. Esses modificadores também podem ser aplicados apenas
em partes da ER com o grupo vazio (?Z), em que
Z pode ser uma das seguintes opções: "imsx". Vamos ver um
exemplo simples:
$_ = "homer, diga duh";
$curinga = '.*';
if ( m/$curinga ($curinga)/ ) {
print "$1!\n";
}
s{ $curinga}' $curinga é massa!';
print "$_\n";
print "e o \$1? <$1>\n";
# resultado:
#duh!
#homer, $curinga é massa!
#e o $1? <>
Primeiro gravamos a variável mágica $_ com nosso
texto. Depois jogamos nosso super curinga das ERs em outra variável.
Na linha seguinte, usamos o comando m//, para casar a ER
.* (.*) na variável $_. Opa! Há muita
coisa nessa frase. Primeiro, a ER ficou assim, pois como usamos as
barras como delimitadoras, então o robozinho fez a interpretação da
variável $curinga. Com essa ER, estamos nos aproveitando
da gulodice do curinga para guardar no grupo a última palavra da
frase.
Mas onde dissemos que era para casar com o texto da variável
$_? Não dissemos. Ela é a variável-padrão de comparação.
Como a busca deu certo, foi impressa a última palavra. Note que ao
usarmos grupos, são gravadas as variáveis $1, $2
, etc. para podermos utilizar o conteúdo desses grupos em outras partes
do programa.
Em seguida pode não parecer, mas fizemos uma substituição. O
comando s/// ficou um pouco desfigurado, pois na primeira
parte, onde vai a ER. Precisávamos que a variável $curinga
fosse interpretada, então usamos as chaves como delimitador. Na
segunda parte, usamos as aspas simples como delimitador, pois não
queríamos a interpretação.
Mas só dissemos "troque {isso} por 'aquilo'", onde ele trocou, e
para onde foi o resultado? Você se lembra da variável padrão
$_? Como não especificamos onde trocar, ela é assumida, e como
a substituição regrava o resultado na própria variável do texto
original, lá se foi o resultado para o $_.
E o nosso $1? No último print vimos que
ele sumiu! Mesmo a substituição não tendo usado grupo algum, a
variável foi regravada. Que isso nos sirva de lição: se quiser usar
os $1 da vida em outras partes do programa, copie-o para
outra variável.
Além de mais de uma dezena de livros sobre Perl que há na O'Reilly, aqui vão algumas páginas: