[SP-pm] Substituicoes balanceadas

Roberto Maluhy Junior maluhy em gmail.com
Segunda Abril 17 13:01:53 PDT 2006


Ola Novamente,

Estou com alguma, para não dizer muita, dificuldade com uma
substituição balanceada e caso vocês possam me ajudar, ficarei muito
grato.

O problema é o seguinte:
Suponha $a = "abc abc \$abc\$ abc \$abc\$\$abc\$ \$abc\{\$abc
\{abc\}\$ abc\}\$ abc";

Gostaria de detectar, ou melhor, substituir "inicios" e "finais" de
$'s por <BEGIN> e <END>, respectivamente, mas com uma condição de
hierarquia baseada na presença de chaves, assim, $a ficaria:
abc abc <BEGIN>abc<END> abc <BEGIN>abc<END><BEGIN>abc<END>
<BEGIN>abc\{<BEGIN>abc \{abc\}<END> abc\}<END> abc

Isso quer dizer que os $'s dentro de chaves não têm nada a ver com os
que estão fora das chaves, e ainda pode haver múltiplas chaves uma
dentro da outra; ou seja, é proibido ocorrer <BEGIN> ... \{  ...
<END>.

Como faço isso? Não sei nem por onde começar.

Abraços,
Roberto

On 2/8/06, Wendel Scardua <wendelscardua em gmail.com> wrote:
> Pra mim o "python" é só pra "disfarçar" (salvei o código em x.pl , e
> rodei via "perl x.pl" )
>
> [spoiler? sei lá]
>
> Aquele "open s,etcetera..." na verdade está executando uma
> substituição ( s,foo,bar, ) e o resultado da substituição (suponho q
> seja 0, pois houve 0 substituições) é o 1º parâmetro do open . O
> problema é que não vejo o segundo parâmetro... ou será que pode com 1
> só ? vou ver a documentação... rs... :-)
>
> [/spoiler? sei lá]
>
> On 2/8/06, Gabriel Vieira <gabriel.vieira em gmail.com> wrote:
> > Ele deu socos no teclado e saiu isso hehe
> >
> > tb nao consegui rodar.. talvez pelo 'phynton' ali.. mas tb nao tive
> > paciencia de analisar o codigo...
> >
> > Abraços
> > ----- Original Message -----
> > From: "Wendel Scardua" <wendelscardua em gmail.com>
> > To: <saopaulo-pm em mail.pm.org>
> > Sent: Wednesday, February 08, 2006 3:42 PM
> > Subject: Re: [SP-pm] Substituicoes balanceadas
> >
> >
> > Ué... eu rodei o script mas não aconteceu nada :-(
> > O q eu fiz de errado ?
> >
> > obs: é que eu não tô com tempo (e talvez nem tenha capacidade
> > necessária) pra fazer um "parsing mental" desse script aí... 0 é um
> > handle válido !? estou vendo um open sem arquivo a ser aberto ?
> >
> > obs2: eu chuto que seja um japh, pelo conteúdo do @#, mas nem
> > lembrava/sabia de um array @#...
> >
> > On 2/8/06, Marco Lima <marco.lima em e-via.com.br> wrote:
> > > Qual eh a trapaça ? e esse naum seria o objetivo !!
> > >
> > > Ou seja ... o objetivo naum eh trapacear !!
> > >
> > > open s,">#\!/usr/bin/python";;$#=$/;seek s,"m/^j.a.p.h.!$/";:print
> > > s"#\!/usr/bin/perl",+0;;$_=(<0>)[-2];$/=q*(\w)*;
> > > @#=(36.32.32.44.101.114.99,107.104.97.32,114.108.80.101,32.101.114.116,104.110.111.97,32.115.116.74.117.32.32.36,);
> > > $_=join '',eval("$_");*#=*_;$#=~s*^\$(.+)\$$*$1*;print ~~ reverse join '
> > > ',map{s$\$/\$/$\$2\$1$g&&$#}split(' ',$#);
> > >
> > > *<=-))
> > >
> > > [  ]'s
> > >
> > > --
> > >
> > > Marco Lima
> > > J. A. P. H.
> > >
> > > marco.lima em e-via.com.br
> > > mago em rio.pm.org
> > > mago em cpan.org
> > >
> > > Sociedade Perl do Brasil   |   http://www.perl.org.br
> > > Perl Monks                 |   http://www.perlmonks.org
> > > Brasil Perl Mongers        |   http://brasil.pm.org
> > >
> > > Register Linux User #355235
> > > Slackware Linux, for the subgenius
> > >
> > > "Ninguém é tão grande que não possa aprender, e nem tão pequeno que
> > > não possa ensinar"
> > > _______________________________________________
> > > SaoPaulo-pm mailing list
> > > SaoPaulo-pm em pm.org
> > > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> > >
> >
> >
> > --
> > []s
> > Wendel
> > --
> > "Or think of Perl as a bigger hammer.  It lets you treat everything
> > like a nail,
> > and get away with it most of the time.  But sometimes not."
> > -- Larry Wall
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
> > _______________________________________________
> > SaoPaulo-pm mailing list
> > SaoPaulo-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/saopaulo-pm
> >
>
>
> --
> []s
> Wendel
> --
> "Or think of Perl as a bigger hammer.  It lets you treat everything
> like a nail,
> and get away with it most of the time.  But sometimes not."
> -- Larry Wall
> _______________________________________________
> 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


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