[SP-pm] Problema com substituição

Fernando fernandocorrea em gmail.com
Quinta Agosto 3 18:12:56 PDT 2006


-----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-----



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