[Cascavel-pm] Teste para "Perl Job Developer"

Eden Cardim edencardim em gmail.com
Terça Janeiro 2 07:25:06 PST 2007


On 1/2/07, Solli Honorio <shonorio em gmail.com> wrote:
>  hummm para mim todos os prints resultaram em 'barfoo', mas o primeiro cara
> não deveria apenas imprimir bar ?

Ops, viajei, tanto no exemplo como na explicação...

perl -e'$_="SEEKING"; print if s/(?:SEEKING)?/bar/;'
Aqui da match com SEEKING porque regexes são gulosas por padrão.

perl -e'$_="SEEKING"; print if s/(?:SEEKING)??/bar/;'
Aqui eu desativei a 'gula' então vai dar match com a string vazia que
tem antes do 'SEEKING'

perl -e'$_="foo"; print if s/(?:SEEKING)?/bar/;'
Aqui da match com a string vazia que tem antes de 'foo'.

perl -e'$_="fooSEEKING"; print if s/(?:SEEKING)?/bar/;'
Aqui da match com a string vazia que tem antes de 'foo' porque este é
o primeiro match possível.

perl -e'$_="fooSEEKING"; print if s/(?:SEEKING)?/bar/g;'
Tada!

Bem, o importante é perceber que s/(?:SEEKING)?/bar/ é diferente de
s//bar/. Os bugs criados por detalhes como esses em regexes são
bastante difíceis de depurar (pelo menos pra mim).

-- 
Eden Cardim
Instituto Baiano de Biotecnologia
Núcleo de Biologia Computacional e Gestão de Informações Biotecnológicas
Laboratório de Bioinformática
--
"you seem to think that 'close enough' is close enough...
please learn to be 'literal' around programming."
merlyn - on irc.freenode.net#perl


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