[SP-pm] Substituicoes com verificacao

Gabriel Vieira gabriel.vieira em gmail.com
Sábado Fevereiro 25 20:17:58 PST 2006


IIIIIIIIIIIIIIIIIIniciadoooo o Perl Golf!!!!!

Gabriel já dispara comum programa bem configurável!!!!

Valerá quem fizer o menor código com configurações iguais à disposta no 
código a seguir e (codigo opcional) o menor codigo sem as configuracoes!!!

--------8<--------
# frase a ser trabalhada
my $frase = "Em 2002, o Brasil ganhou a copa com 2 gols apos 9980 rezas! 
:)";
# quantidade de digitos do conjunto a ser trabalho
my $dig = 4;
# mínimo de caracteres antes e depois
my $aed = 10;
# tags para 'cobrir' os digitos solicitados
my %c = (a => "<data>",f => "</data>");

$frase =~ s/(\d{$dig})/&x($1)/eg;
print $frase;

sub x{
 my $z = $_[0];
 my $x = pos $frase;
 my $w = $aed;
 my $y = $x - $w;
 $y = 0, $w = $x if $y < 0;
 my $a = substr($frase,$y,$w);
 my $b = substr($frase,$x+$dig,$aed);
 print $a.$z.$b." => ".$a.$c{a}.$z.$c{f}.$b;
 print "\nSubstituir? (s/n) ";
 chomp(my $j = <STDIN>);
 $j =~ /^s$/i?$c{a}.$z.$c{f}:$z;
}
--------8<---------

Abraços xD

Gabriel Vieira

----- Original Message ----- 
From: "Roberto Maluhy Junior" <maluhy em gmail.com>
To: <saopaulo-pm em mail.pm.org>
Sent: Saturday, February 25, 2006 6:54 PM
Subject: [SP-pm] Substituicoes com verificacao


Ola Senhores,

Estou com alguma dificuldade em implementar a seguinte situacao...
Imagine que eu queira fazer substituicoes, por exemplo, toda vez que
encontrar 4 digitos num texto, colocar <data>...</data> ao redor dos 4
digitos. Bom, isto e muito simples com s/.../.../g ou while
(s/.../.../) {...}. No entanto, e se eu quiser fazer uma pergunta para
cada substituicao confirmando esta? Eu penso em imprimir o contexto da
substituicao, por exemplo, pelo menos os 10 caracteres anteriores ao
match e pelo menos os 10 posteriores na tela e o resultado da
substituicao caso tenha efeito...perguntando na sequencia se esta
substituicao deve ocorrer de fato.

Exemplo:

--- inicio do arquivo texto ---
Em 2002, o Brasil ganhou a copa com 2 gols apos 9980 rezas! :)
--- fim do arquivo texto ---

O programa deveria mostrar algo como:
$ Em 2002, o Brasil  =>  Em <data>2002</data>, o Brasil
$ Substituir? (s/n) s
$ gols apos 9980 rezas! :  =>  gols apos <data>9980</data> rezas ! :
$ Substituir? (s/n) n

Acho que ficou claro.

Obrigado e abracos.

Roberto

--
Roberto Maluhy Jr
_______________________________________________
SaoPaulo-pm mailing list
SaoPaulo-pm em pm.org
http://mail.pm.org/mailman/listinfo/saopaulo-pm 



Mais detalhes sobre a lista de discussão SaoPaulo-pm