[SP-pm] Problema com substituição

Roberto Maluhy Junior maluhy em gmail.com
Sexta Agosto 4 07:58:42 PDT 2006


Olá!

Obrigado pelo grande ajuda Eden e Fernando!
Consegui chegar ao objetivo que queria com as dicas formidáveis.
Aprendi os poderes do qr//, do eval e do s///ee. Genial!

Abraços,
Roberto

On 8/3/06, Fernando <fernandocorrea em gmail.com> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
> Roberto Maluhy Junior escreveu:
> > Olá Senhores!
> >
> > Tenho um problema com os $1, $2, ....
> >
> > Em vez de, por exemplo, fazer uma substituição como
> > -----
> > $_ = "O gado roeu a roupa do rei de roma";
> > $correto = "gato";
> > s/^(.*?)(gado)(.*?)$/$1$correto$3/g;
> > -----
> >
> > Gostaria de fazer algo como:
> > -----
> > $_ = "O gado roeu a roupa do rei de roma";
> > $correto = "gato";
> > $match = '^(.*?)(gado)(.*?)$';
> > $subs = '$1' . $correto . '$2';
> > s/$match/$subs/g;
> > -----
> > O resultado deste ultimo caso eh
> > "$1gato$2"
> >
> > Sei que neste exemplo nao preciso dos $1 e $2 etc...mas faz de conta
> > que sejam necessarios. A ideia eh ler o $match e o $subs de um arquivo
> > de configuracao, sem precisar modificar o arquivo principal toda vez
> > que quiser fazer uma substituicao diferente.
> >
> > Como posso fazer os $1 $2 ... que estao num scalar ($subs neste caso)
> > serem considerados como variaveis e nao como strings na regexp??
> >
> > Obrigado desde já!
> >
> > Roberto
> >
> é feio, mas funciona:
>
>
> $_ = "O gado roeu a roupa do rei de roma";
> $correto = "gato";
> $match = q"^(.*?)(gado)(.*?)$";
> $subs = "\$subs=\"\$a[0]\$correto\$a[2]\"";
> @a=/$match/g;
> eval $subs;
> s/$match/$subs/g;
>
> -----BEGIN PGP SIGNATURE-----
> Version: GnuPG v1.4.2.2 (GNU/Linux)
> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
>
> iD8DBQFE0p8YqUTNa2oq34gRAsCdAJ0VDQj/DcAtkJwG+MIC1ShlJOan3ACgqKfV
> bUwIA7qgOVGMfLG+msYraCs=
> =eLCA
> -----END PGP SIGNATURE-----
>
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>


-- 
Roberto Maluhy Jr

Casa Editorial Maluhy & Co.
http://www.casamaluhy.com

IFUSP -- Instituto de Física
Universidade de São Paulo, Brasil


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