aquela linha e substituida com a troca entre \1 e \3. Apos uma comparacao, voce pode usar variaveis especiais somente de leitura $` ou $& ou $' para encontrar o que foi comparado antes, durante e depois da busca. Entao: $_ = "Lorde Whopper de Fibbing";/pp/; resultara em verdadeiro nas seguintes declaracoes (recorde que eq e um teste usado em strings): $` eq "Lorde Who";$& eq "pp";$' eq "er de Fibbing"; Finalmente, sobre o topico Recordando modelos, o importante e saber que dentro de barras de uma comparacao ou substituicao, as variaveis sao interpoladas. Entao: $busca = "par";s/$busca/xxx/g; ira substituir cada ocorrencia com xxx. Se voce quiser substituir cada ocorrencia de para entao voce nao pode usar s/$buscaa/xxx/g porque o a sera interpolado com a variavel $busca. Ao inves disso, voce deve colocar o nome da variavel entre chaves, de modo que o codigo seja: $busca = "par";s/${busca}a/xxx/g; Traducao A funcao tr permite a traducao caractere-a-caractere. A seguinte expressao substitui cada a com e, cada b com d, cada c com f na variavel $sentenca. A expressao retorna o numero de substituicoes efetuadas: $sentenca =~ tr/abc/edf/ A maioria dos codigos especiais ER nao se aplica a funcao tr. Por exemplo, a proxima declaracao conta o numero de asteriscos na variavel $sentenca e armazena na variavel $contagem: $contagem = ($sentenca =~ tr/*/*/); Contudo, o traco permanece como seu uso entre. Esta declaracao converte toda $_ para letra maiuscula: tr/a-z/A-Z/; Exercicios Seu ultimo programa contava linhas de um arquivo que continham uma certa string. Modifique ele de modo que conte linhas com letras duplas (ou qualquer outro caractere duplo). Modifique novamente para que estas letras duplas aparecam entre parenteses. Por exemplo, seu programa deve produzir algo como: 023 E(ss)es pioneiros conduziram muitas se(ss)oes Tente fazer com que todos os pares de letras sejam colocados entre parenteses, e nao apenas o primeiro par de cada linha. Para um programa mais interessante, voce deve tentar o seguinte. Suponha que seu programa se chama contalinhas. Entao voce deve executa-lo com: perl contalinhas Contudo, se voce chama-lo com varios argumentos, como em: perl contalinhas primeiro segundo etc entao estes argumentos serao armazenados em uma matriz @ARGV. No exemplo acima, nos teremos $ARGV[0] igual a primeiro, $ARGV[1] igual a segundo e $ARGV[2] igual a etc. Modifique seu programa de modo que ele aceite uma string como argumento e conte somente linhas com essa string. Ele deve tambem colocar ocorrencias dela entre parenteses. Entao: perl contalinhas par devera retornar algo como: 019 Mas (par)a os grandes pioneiros, suas (par)tes eram... Split Uma funcao muito util no Perl e a split, que separa uma string e coloca em uma matriz. A funcao usa expressoes regulares e tambem funciona com a variavel especial $_. A funcao split e usada desta forma: $info = "Caine:Michael:Ator:Doce Liberdade";@pessoal = split(/:/, $info); que tem o mesmo efeito que: @pessoal = ("Caine", "Michael", "Ator", "Doce Liberdade"); Se a informacao estiver armazenada na variavel $_ entao poderemos usar somente: @pessoal = split(/:/); Se os campos sao divididos por varios dois pontos, entao podemos usar os codigos ER para